3. 数据库的删除
c盘中的Program Files (x86)中的MySQL 和ProgramData中的MySQL
注册表编辑器中的 HKEY_LOCAL_MACHING\SYSTEM\ControlSet001\services\MySQL
HKEY_LOCAL_MACHING\SYSTEM\ControlSet002\services\MySQL
5.mysql的数据类型:
字符串:char (),varchar(),text
数字:unsigned(不能插入负数),zerofill(补0),tinyint,smallint,in,bigint,float,double,decimal(N,M)(N是整数部分加小数部分的总长度,即插入的数字的整数部分不能超过(N-M)位,M是小数部分的位数,若插入的部分不足M位则会自动补到M位小数,若超过M位,就会截取前M位)
日期:date,time,datetime,timestamp(修改时间时,第一个timestamp字段,会自动更新成当前时间)
blob(binary large object),二进制大对象,是一个存储二进制文件的容器
tinyblob(255字节),blob(65K),mediumblob(16M),longblob(4G)
default:设置字段的默认值;
comment:在建表语句中加入注释语句
4.语句:
登录数据库:mysql -uroot -proot
查看数据库:show databases;
show schema;
进入数据库:use mysql;
查看数据表:show tables;
退出:quit exit \q
通知服务器,客户端的编码问题是gbk:set names gbk;
创建数据库:create database db1 charset utf8;
查看建库语句:show create database db1\G;
修改数据库的默认字符集:alter database db1 charset gbk;
删除数据库:drop database db1;
创建表:create table tb1(……) engine=innodb(默认就是这个) charset=utf8;
查看表结构:desc tb1;
查看创建表语句:show create table tb1\G;
修改表名:rename table tb1 to user;
修改存储引擎和字符编码:alter table user engine=myisam charset=gbk;
添加字段:alter table user add id int first;(加在第一行)
alter table user add email varchar(100) after name;
alter table user add(age int ,height int);
改字段名:alter table user change gender sex char(1);
改字段类型:alter table user modify sex char(2);
改字段顺序:alter table user modify age int after name;
删除字段:alter table user drop column height;
删除表:drop table user;
截断表(删除表并重新创建)truncate table user;
insert插入数据:insert into user values(…);
insert into user(…) values(),();
update修改数据:update user set id =5,name=’全安’ where id =1;
delete删除数据:delete from user where id>3;
select查询数据:select* from user;
新表创建主键 :可以直接在字段后面加上 primary key auto_increment,也可以在最后加上primary key(id);
修改表时添加主键: alter table tb1 add primary key(id);
删除主键:alter table tb1 drop primary key;
修改主键,使其自增:alter table tb1 modify id int auto_increment;
可以调整下一个自增值(一般不会这么做):alter table tb1 auto_increment=100;
当手动插入一个最大主键值,自增变量会变成这个最大值+1;
取消自增:alter table tb1modify id int;(不加auto_increment就是取消)
外键:在表的最后加上:foreign key(dept_id)references dept(id);
修改表时添加外键:alter table emp add foreign key(dept_id) references dept(id);
删除外键索引:alter table emp drop foreign key dept_id;
再删索引(可选):alter table emp drop index dept_id;
not null:非空
取消非空约束:alter table emp modify name varchar(10);不写not null,就是允许null;
unique:唯一 直接在字段后面加上unique或者在表的最后加上unique key(name);
unique key(name,ip);(两个字段组合不重复)
修改表时添加:alter table emp add unique key(name);
取消唯一约束:
limit:limit接受一个或两个数字参数,如果是两个参数,第一个参数指定第一个返回记录的偏移量,第二个参数指定返回记录行的最大数目
select *from tb1 limit 5,10;检索记录行6-15
select * from tb1 limit 95,-1;检索记录行96-last
select *from tb1 limit 5;检索前5个记录行,换句话说limit n,等价于limit0,n;
where 子句:
对查询进行过滤:
=,<>,>,>=,<,<=,between..and…,in(…,…,…),is null,like (%,_)(\_,\%,\\)(普通的下划线,百分号,反斜线), not (not between and ,not in(),is not null,not like),and,or
distinct:去除重复的值
order by:asc(升序,默认),desc(降序)
子段别名: as 或者直接省略as
字符串:
char_length('a中') - 字符数
length('a中') - 字节数
concat('a','b','cde','fff') - 字符串连接,其他数据库可用 || 连接字符串,'abc' || 'def'
concat_ws(';','abc','def','ggg') - 用分隔符连接字符串
instr('abcdefgdef','def') - 返回第一个子串的位置,从1开始,找不到返回0
locate('abc', '---abc---abc---abc-') - 返回第一个子串的位置,从1开始,找不到返回0
locate('abc', '---abc---abc---abc-',5) - 从指定位置向后找
insert('abcdefghijkl',2, 11, '---') - 用子串取代从2位置开始的11个字符
lower('AdFfLJf') - 变为小写
upper('AdFfLJf') - 变为大写
left('AdFfLJf',3) - 返回最左边的三个字符
right('AdFfLJf',3) - 返回最右边的三个字符
lpad('abc', 8, '*') - 左侧填充,指定长度比源字符串少,相当于left
rpad('abc', 8, '*') - 右侧填充,指定长度比源字符串少,相当于left
trim(' a bc ') - 去除两端空格
substring('abcdefghijklmn', 3) - 从3位置开始的所有字符
substring('abcdefghijklmn', 3, 6) - 从3位置开始的6个字符
repeat('abc', 3) - 重复三遍abc
REPLACE('Hello MySql','My','Your') - 子串替换
REVERSE('Hello') - 翻转字符串
SPACE(10) - 返回10个空格
数学
ceil(3.94) - 天花板,向上取整
floor(3.94) - 地板,向下取整
round(673.4974) - 四舍五入
round(673.4974, 0) - 四舍五入到小数点后两位
round(673.4974, -2) - 四舍五入到百
truncate(234.39, 1) - 舍去至小数点后1位,必须指定位数
format(391.536, 2) - 数字格式化为字符串,###,###.###,四舍五入,第二个参数为小数位数
rand() - 随机浮点数,[0,1)
日期
l 日期字符串格式符合mysql的默认格式 '2018-3-15',可以与日期类型数据之间自动转换
NOW() 返回当前的日期和时间
CURDATE() 返回当前的日期
CURTIME() 返回当前的时间
DATE(时间) 提取日期或日期/时间表达式的日期部分
TIME(时间) 提取日期或日期/时间表达式的时间部分
EXTRACT(字段 From 日期) 返回日期/时间按的单独部分
字段的合法值:
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH
DATE_ADD(日期, INTERVAL 数量 字段) 给日期添加指定的时间间隔
字段的合法值同上
DATE_SUB(日期, INTERVAL 数量 字段) 从日期减去指定的时间间隔
DATEDIFF(日期1, 日期2) 返回两个日期之间的天数
DATE_FORMAT(日期, 格式) 用不同的格式显示日期/时间
格式字符: %Y-%m-%d %H:%i:%s
%d/%m/%Y
%Y年%m月%d日
%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时 (00-23)
%h 小时 (01-12)
%I 小时 (01-12)
%i 分钟,数值(00-59)
%j 年的天 (001-366)
%k 小时 (0-23)
%l 小时 (1-12)
%M 月名
%m 月,数值(00-12)
%p AM 或 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间, 24-小时 (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天 (0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位
LAST_DAY(日期) - 返回当月最后一天
null值处理:ifnull(1,2) 判断参数1是否为null,不是null返回第一项,是null返回第二项
coalesce(1,2,3…)从左到右找到第一个非null值返回
加密:md5(‘……’);单项加密,不能解密,任何数据加密成32位16进制数字字符串,一般用来对用户的密码进行加密
sha(‘,,,,,’)单项加密,不能解密。
、
多行函数,聚合函数
sum()
avg()
max()
min()
count()