数据库MySQL

数据库分类

|-- windowMySQL的安装和配置:

.msi微软安装

|--zip包压缩

1、下载官网压缩包

2、解压压缩包(不要C盘、不要有中文、不要有特殊字符)

3、复制一个xx.ini,修改为my.ini

4、修改my.ini

           datadir=mysql的主目录

            basedir=mysql的主目录/data

5、将bin目录添加到path中去(此电脑右键属性--高级系统设置--环境变量--path--新建)

6、以管理员的身份运行cmd,将路径切换到bin来(很重要)(搜索里写入cmd--命令提示符右键--以管理员身份运行)

7、执行mysqld install 命令,安装注册mysql服务

     cd  D:\tools\mysql-5.5.41-winx64\bin

      d:

8、启动服务(net start[stop|restart]  服务名称(eg:mysql))

9、测试

 9、进入数据库

                    mysql -u用户名称 -p用户密码

                   如:mysql -uroot -proot

|--exe msi

                     不教,下一步下一步

|-- Linux

|-- apt

          sudo apt [apt-get] install mysql-server mysql-client

          sudo apt [apt-get] install mysql-server

          sudo apt [apt-get] install mysql-client

          service mysql start[|stop|restart]

|-- zip压缩包

1、下载mysql的压缩包 .tar.gz

2、解压压缩包

tar -zxvf xxx.tar.gz

3、bin配置path :两种方案,可以配置到系统配置文件中或者用户配置文件

4、启动mysql

        mysqd install

        service mysql start/stop

msyql的登录

          mysql -u(user) -p(password)-h(host主机)-P(port端口(默认端口是3306))

mysql的退出 :exit quit \q ctrl+c

常见的操作命令

  show databases; # 显示当前数据库管理系统中的所有数据库

           show databases like "%b%" # 模糊匹配符合规则的数据库

  use dbName; # 进入到某个数据库(DBName就是这个数据库名称)中。

  show tables; # 查看当前数据库下所有表

             show tables like "%p%"; #模糊匹配符合规则的表

  desc(description) tableName; # 描述某张表的结构

  show create table tableName; # 显示创建表的sql

标准sql的学习:

sql(structured  query language)结构化查询语言

在1986年 ANSI sql86

在1987年 ISO sql87

  1989 ISO  sql89

dml(database Manipulation language): 数据库操作语言

       show查    create增   drop删   alter改

ddl(database difined language):数据定义语言

CRUD

insert

update

delete

dql(database query language) 数据库查询语言

dcl(database controller language):数据库控制语言

  grant(权限)

invoke

dba(database administrator)数据库管理员

三个创建:表 数据库 视图

四条语句:CRUD

五种约束:主键、外键、唯一、非空、默认值

================================================================

DBMS ===> db ===> table、view、index……

如何创建一个数据库

create database dbName [charset=utf8 ENGINE=InnoDB]

# 创建一个数据库,名称是db_xx

create database db_py1803;

create database db_py1803 charset=utf8

删除一个数据库

drop database DBName (慎用)

drop database db_py1803;

如何创建一张表

作业:请说明如下四种类型的不同之处?

char nchar varchar nvarchar

create table tableName(

                 id int, #

                name varchar(50), liujianhong

               name char(50),

              age int,

              nickname char(50)

)

drop table tableName;

# 创建一张表 t_user

create table t_user(

              id int primary key (主键不能为空,不能重复)auto_increment, -- 主键 自动增长

              username varchar(50) not null,

              password varchar(100) not null,

             age int default 18,

             gender varchar(5) default (默认值)'nan',

              nickname varchar(255) unique (无逗号) # unique 表示唯一约束

)

# CRUD 增删改查

# c(create) r(Retrieve)u(update) d(delete)

# 插入数据

insert into tableName(字段1,字段2……,字段n) values(值1,值2……,值n)

# 插入一条数据到t_user表里面来

insert into t_user(id,username,password,age,gender,nickname)

values(1,"liushuaige",'123456',16,'nan',"shuaigeliu")

insert into t_user(id,username,password,age,gender,nickname)

values(1,"liushuaige",'123456',16,'nan',"shuaigeliu")

insert into t_user(id,username,password,age,gender,nickname)

values(null,"liushuaige",'123456',16,'nan',"shuaigege")

insert into t_user values(null,"liushuaiguo",'123456',16,'nan',"shuaige")

insert into t_user(id,password,username,nickname)

values(default,'123456',"liushuaige","ooo");

truncate  t_user;

# 简单的查询某张表

select 字段1,字段2……,字段n from tableName;

select id,username,gender,age,password,nickname from t_user;

select * from t_user;

select id,username from t_user;

# 更新(修改)

update tableName set 字段1=新值[,字段2=新值……字段n=新值] where 条件

update t_user set username = 'liuouba';

update t_user set username = 'liushuaige' where id = 1;

update t_user set username = 'oubaliu' where id >3;

#删除 delete

delete from tableName where condition

delete from t_user where id = 6






配置mysql的远程登录:

1、为什么配置远程登录?

2、如何配置远程登录

1、到mysql数据库 use mysql

2、查询user  ==== select host,user from user;

3、修改root用户

update user set host='%' where user='root';(%表示通配所有,可以支持远程登录)

4、修改/etc/mysql/mysql.conf.d/mysqld.cnf  

 进入vim中找到43行将bind-address 注释掉

5、重启服务 sudo service mysql  restart;

===============================================================

create table t_user(

               id int primary key auto_increment,

               name varchar(50) not null, # 不能为空

               age int default 18, # 如果填入的不写,则默认填写18岁

               gender varchar(10) default(默认) 'nan',

               nickname varchar(50) unique, -- 不能重复

              address char(50)

)



mysql数据类型

整型 :int

浮点型:float , decimal(7,2)#7表示总长度,2表示小数位数

字符串:name varchar(30)  liujianhong  不超过30就占用本身的大小 (一般用于字符串长度不定时可以剩内存)

name char(30)  字符串长度不超过30时,也占用30的位置 (一般用于长度确定的时候)

文本类型:text


日期:data(只能表示年月日) time (只能表示时分秒)datatime(年月日时分秒)now()当前日期 

create table t_user(

                 id int primary key auto_increment,

                 name varchar(50) not null,

                 birthday datetime default '2018-06-22 00:00:00',

                 intro text

);

====================================================================

grant语言的使用

grant all 权限 db_py05.* 这个库的所有表 ljh表示用户名称localhost表示地址 identified by 'ljhljh'表示修改密码为ljhljh 如果用户存在则修改,不存在则创建ljh

grant all on db_py05.* to 'ljh'@'localhost' identified by 'ljhljh';

grant all on *.* to 'root'@'%' identified by '123456';第一个*表示所有的库,第二个*表示所有的表

====================================================================

CURD

查询

select 字段1,字段2,……,字段n from tableName [where condition]条件

select  *  from  tableName;

增加

insert into tabelName(字段1,字段2,……,字段n) values(值1,值2,……,值n);

insert into tabelName values(值1, 值2,……,值n); # 必须写全

更新

update tableName set 字段1=新值,字段2=新值,字段3=新值 [where condition]

 删除

delete from tableName  [where condition](如果不带条件,则表内容清空)

# truncate 删除 慎用

修改表的结构:alter

alter table t_user update/change/modify type text;修改字段type的类型

alter table t_user add type int;给表增加字段

alter table t_user drop type;删除字段

===================================================================

CRUD

insert into tableName values();

update tableName set  where condition;

delete from tableName where condition;

select * from tableName;

select 字段1,字段2…… from tableName;

mysqldump


分页:

当前页 pageNow 用户决定

每页显示多少条 pageSize 程序员决定

总有多少页 pageCount=allCount/pageSize 计算得到

总有多少条记录 allCount 查询得到 select count(*) from tName;


# 查询id为1的用户

SELECT * FROM t_user WHERE id = 1;

# 查询id大于1的用户

select * FROM t_user WHERE id > 1;

select * FROM t_user WHERE id < 5;

select * FROM t_user WHERE id >= 3;

select * FROM t_user WHERE id != 3;

select * FROM t_user WHERE id <> 3;


-- 查询年龄大于10并且姓名为王五的人的性别

SELECT gender FROM t_user where age > 10 AND username = '王五';

# 查询年龄大于等于20 或者性别是男的人的详情

SELECT * FROM t_user WHERE age >= 20 OR gender = '男';


# 查询性别为空

# 注意:在sql中,判断为空,或者判断不为空,需要使用is,而不是等于符号

null空和空字符串的区别

SELECT * FROM t_user where gender is null;

SELECT * FROM t_user where gender is not null;包含非空和空字符串


# 查询所有人的年龄的和

SELECT SUM(age) FROM t_user;

# 找出年龄最大的那个哥们

SELECT max(age) FROM t_user;

# 找出年龄最大的那个姐们

SELECT min(age) FROM t_user;

# 求当前所有人的平均年龄

SELECT avg(age) FROM t_user;


# 共有多少人?

SELECT count(*) FROM t_user;

# 共有多少人?

SELECT count(*) as counts FROM t_user;

# 共有多少人?

SELECT count(*) counts FROM t_user;


# 年龄大于16 并且 年龄小于 20岁

SELECT * FROM t_user where age >= 16 AND age <= 20;

# 年龄大于16并且年龄小于 20岁

SELECT * FROM t_user where age BETWEEN 16 AND 20;

# 查询年龄为5 8 16 20 30 50的人

SELECT * from t_user where age in (5,8,16,20,30,50);

# 查询年龄为5 8 16 20 30 50的人

SELECT * from t_user where age not in (5,8,16,20,30,50);


# 模糊查询  like

# 查询姓王的人

SELECT * FROM t_user where username LIKE '王%'

# 查询名称中第二个字是建的

SELECT * FROM t_user where username LIKE '_建%'

SELECT * FROM t_user where username LIKE '%哥%'

SELECT * FROM t_user;


# 排序

-- 查询所有用户,默认使用年龄升序排列

SELECT * FROM t_user order by age ;

SELECT * FROM t_user where age > 10 order by age asc;

SELECT * FROM t_user where age > 10 order by age desc;

SELECT * FROM t_user where age > 10 order by age desc, id asc;


# 分组

# 统计当前男生有多少人,女生多少人

SELECT count(gender) FROM t_user;

SELECT gender,count(*) FROM t_user group by gender;

SELECT age FROM t_user GROUP BY age;

# 通过性别进行分组,得到组员多余3人的

# having 必须是出现group by之后,它是对分组结果进行筛选

SELECT gender,count(*) as counts FROM t_user group by gender having counts > 3;

SELECT * FROM t_user LIMIT 5;前五个值

SELECT * FROM t_user LIMIT 0,2;(0哪开始,id=1开始,2表示查两个)

SELECT * FROM t_user LIMIT 2,2;

SELECT * FROM t_user LIMIT 4,2;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,290评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,399评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,021评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,034评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,412评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,651评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,902评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,605评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,339评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,586评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,076评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,400评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,060评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,851评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,685评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,595评论 2 270

推荐阅读更多精彩内容