创建数据库
核心三条:
1 2 3
| create database bigdata; grant all privileges on *.* to jspon@'%' identified by '123456'; flush privileges;
|
在登录mysql的时候 mysql -urooot -p -和p之间不能有空格
show processlist
1 2 3 4 5 6 7 8
| mysql> show processlist; +----+------+--------------------+---------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+--------------------+---------+---------+------+-------+------------------+ | 5 | root | localhost | NULL | Query | 0 | init | show processlist | | 6 | root | 192.168.52.1:62593 | bigdata | Sleep | 3 | | NULL | | 7 | root | 192.168.52.1:62594 | NULL | Sleep | 21 | | NULL | +----+------+--------------------+---------+---------+------+-------+------------------+
|
如果我们的mysql服务夯住了,可以查看是哪个sql导致的,查找消耗时间长的,确认好可以kill后,可以杀掉该sql
杀掉sql kill id 杀掉对应的id即可
MySQL的字段类型
数值类型
int 整数
long 长整型
float 单精度
double 双精度
decimal 小数值 金额
字符串类型
char 字节 定长 0-255字节 axxxxxxxxx 会自动补全 255字节
varchar 字符串 变长 0-65535字节 a
日期
date 日期 YYYY-MM-DD
time 时间 HH:MM:SS
datetime 年月日时分秒 YYYY-MM-DD HH:MM:SS
timestamp 年月日时分秒 YYYY-MM-DD HH:MM:SS
建表规划
建表实例:
1 2 3 4 5 6 7 8 9 10 11
| create table student( id int(11) not null auto_increment, name varchar(200), age int(3),
createuser varchar(200) , createtime timestamp not null default current_timestamp, updateuser varchar(200) , updatetime timestamp not null default current_timestamp on update current_timestamp, primary key (id) );
|
建表剖析:
1.表的名称 字段的名称不要是中文也不要是汉语拼音
2.统一建表的风格例如创建时间:create_time
3.表中的第一个字段必然是 id 自增长的 主键 无意义,设置的目的是使MySQL能够高性能的存储和查询
MySQL使用自增长主键的优势 https://www.jianshu.com/p/b8d6d809fce3
4.表中的的主键设置成id时候,业务字段需要唯一时候可以使用唯一性约束 unique
在约束里面进行设置添加新的约束字段
一张表只能够有一个主键
主键 = unique + not null
1 2
| ALTER TABLE bigdata.student ADD CONSTRAINT student_un UNIQUE KEY (name) ;
|
5.最后的四个字段建议都加上
1 2 3 4
| createuser varchar(200) , createtime timestamp not null default current_timestamp, updateuser varchar(200) , updatetime timestamp not null default current_timestamp on update current_timestamp,
|
最后一个为设置修改时间
6.业务字段要加上注释
COMMENT '用户名称’
COMMENT ‘用户年龄’
7.字符集和引擎
建表语句中有默认的引擎和字符集
1 2 3 4 5 6 7 8 9 10 11
| CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(200) DEFAULT NULL, `age` int(3) DEFAULT NULL, `createuser` varchar(200) DEFAULT NULL, `createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updateuser` varchar(200) DEFAULT NULL, `updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `student_un` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
1 2 3 4 5 6 7
| mysql> show create database bigdata; +----------+--------------------------------------------------------------------+ | Database | Create Database | +----------+--------------------------------------------------------------------+ | bigdata | CREATE DATABASE `bigdata` /*!40100 DEFAULT CHARACTER SET latin1 */ | +----------+--------------------------------------------------------------------+ 1 row in set (0.00 sec)
|
DEFAULT CHARACTER SET latin1 默认的数据库的字符集是拉丁字符集
字符集分类:数据库字符集、表字符集、列字符集
1 2 3 4 5 6 7 8 9 10 11 12 13
| mysql> show variables like '%char%'; + | Variable_name | Value | + | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql-5.6.23-linux-glibc2.5-x86_64/share/charsets/ | +
|
遇到插入问题时候先确定客户端的字符集、链接的字符集、数据库的字符集、服务端的字符集
8.注意事项:
在生产环境时候对于更新和删除操作的时候要确定好条件,执行查询条件的时候可以先limit 20 取出数据看看,不要执行select * from table_name