mysql - lilunze/lilunze.github.io GitHub Wiki
[TOC]
admin:root@localhost:3306
password:123456
sudo /usr/local/mysql/support-files/mysql.server start
sudo /usr/local/mysql/support-files/mysql.server stop
mysql -h localhost(主机名) -u root(用户名) -p(使用密码) -D test(使用的数据库)
quit
&&
exit
- 整型
数据类型 | 含义 |
---|---|
tinyint(m) | 1个字节 范围(-128~127) |
smallint(m) | 2个字节 范围(-32768~32767) |
mediumint(m) | 3个字节 范围(-8388608~8388607) |
int(m) | 4个字节 范围(-2147483648~2147483647) |
bigint(m) | 8个字节 范围(+-9.22*10的18次方) |
取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。
- 浮点型
数据类型 | 含义 |
---|---|
float(m,d) | 单精度浮点型 8位精度(4字节) m总个数,d小数位 |
double(m,d) | 双精度浮点型 16位精度(8字节) m总个数,d小数位 |
设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。
-
定点数 浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。 decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是小数位。
-
字符串
数据类型 | 含义 |
---|---|
char(n) | 固定长度,最多255个字符 |
varchar(n) | 固定长度,最多65535个字符 |
tinytext | 可变长度,最多255个字符 |
text | 可变长度,最多65535个字符 |
mediumtext | 可变长度,最多2的24次方-1个字符 |
longtext | 可变长度,最多2的32次方-1个字符 |
- 二进制数据(_Blob)
- 日期时间类型
数据类型 | 含义 |
---|---|
date | 日期 '20017-4-11' |
time | 时间 '15:28:36' |
datetime | 日期时间 '2008-12-2 22:06:44' |
timestamp | 自动存储记录修改时间 |
- 数据类型的属性
MySQL关键字 | 含义 |
---|---|
NULL | 数据列可包含NULL值 |
NOT NULL | 数据列不允许包含NULL值 |
DEFAULT | 默认值 |
PRIMARY | KEY 主键 |
AUTO_INCREMENT | 自动递增,适用于整数类型 |
UNSIGNED | 无符号 |
CHARACTER SET name | 指定一个字符集 |
create database test(数据库名) character set gbk(设置数据库字符集)
show databases
use test(数据库名)
create table students
(
id int unsigned not null auto_increment primary key,
name char(8) not null,
sex char(4) not null,
age tinyint unsigned not null,
tel char(13) null default "-"
)
show tables
describe students(数据表名)
// 对每一个字段都插入值
insert into students(数据表名) values (null,'llz',18,'18571543765')
// 只对部分指定的字段插入值
insert into students(数据表名) (name,age,tel) values ('ljw',20,'15439903231')
select *(字段,*代表所有字段) from students(数据表名) where age>19(条件)
update students(数据表名) set age=30(修改字段值) where name='llz'(条件)
delete from students(数据表名) where id=1(条件)
alter table students(数据表名) add sex(新增的字段名) char(4)(新增的字段类型) after age(新增的字段的位置)
alter table students(数据表名) change tel(旧字段) telephone(新字段) char(13) default '-' (新字段的类型)
alter table students(数据表名) drop sex(删除的字段)
alter table students(数据表名) rename class(新数据表名)
drop table students(数据表名)
drop database test(数据库名)
select * from students where name like '%l'
select * from students ORDER BY tel desc;
// desc降序排列
// asc 升序排列
select sex,COUNT(*) from students GROUP BY sex
select a.id,a.name,a.age,b.score from students a inner join score b on a.name=b.name
以上语句等价于
select a.id,a.name,a.age,b.score from students a,score b where a.name=b.name
以上语句是后去两表的交集
select a.id,a.name,a.age,b.score from students a left join score b on a.name=b.name
获取两表交集的同时也获取左表的所有
select a.id,a.name,a.age,b.score from students a right join score b on a.name=b.name
获取两表交集的同时也获取右表的所有
select name from students where favorite is null;
等价于
select name from students where favorite<=>null;
select name from studnets where favorite is not null;
select * from students where name regexp '^l';
显示索引信息
show index from students\G
创建一个普通索引
create index key_words on students (tel);
修改表结构添加索引
alter table students add index key_words (tel);
删除索引
drop index key_words on students;
添加主键
alter table shop add primary key;
删除主键
alter table shop drop primary key;
添加全文索引
alter table shop add fulltext key_words (name);
insert into score_clone (id,name,score) select id,name,score from score;
可在命令行在中使用的
select version() //获取服务器版本信息
select database() //获取当前使用的数据库名
select user() //获取当前的用户名
show status //获取服务器的状态
show variables //服务器配置变量
添加主键来保证数据的唯一性
insert ignore into students values (1,'llz','m',18);
添加ignore,如果数据表中主键已存在该值则直接跳过不插入切不报错。
select first_name,count(*) as count from person group by first_name having count>1;
select * from students into outfile '/users/dada/desktop/students.txt';