$ sudo /etc/init.d/mysql start $ sudo /etc/init.d/mysql stop $ sudo /etc/init.d/mysql restart $ sudo service mysql start $ sudo service mysql stop $ sudo service mysql restart
MySQL基本操作
登录操作
1 2 3 4 5
$ mysql -u root -p -P 3306 -h 127.0.0.1 # -u --user # -p --passwd # -P --port, 3306 is the default port for mysql # -h --host
设置提示符
1 2 3 4 5 6 7 8
mysql> prompt \u@\h \d> PROMPT set to '\u@\h \d> ' root@localhost (none) > use test root@localhost test > # \u 设置显示用户名 # \h 设置显示主机 # \d 设置显示当前数据库 # \D 设置显示完整日期
mysql> help create; mysql> help create database; mysql> help alter; mysql> help alter database;
MySQL数据库操作
数据库创建
使用create database创建数据库t1,并显示详细信息:
1 2 3 4
root@localhost test > create database t1; root@localhost test > show databases; root@localhost test > show create database t1; root@localhost test > create database if not exists t2 character set gbk;
数据库修改
1
root@localhost test > alter database t2 character set = utf8;
数据库删除
1
root@localhost test > drop database t1;
使用数据库
1 2
root@localhost test > use t1; root@localhost t1 > select database(); # 显示当前数据库
创建数据库表
1 2 3 4 5
root@localhost test > create table tb1( -> username varchar(20), -> age tinyint unsigned, -> salary float(8,2) unsigned -> );
查看数据库表
1 2 3
root@localhost test > show tables; # 查看数据库表列表 root@localhost test > show tables from test; # 查看数据库test表列表 root@localhost test > show columns from tb1; # 查看数据库表结构
插入记录到数据库表
1 2 3
root@localhost test > insert tb1 values('Tom', 25, 7863.25); root@localhost test > insert tb1 values('Tom', 25); # error root@localhost test > insert tb1(username,salary) values('John', 4500.69); # ok
记录查找
1
root@localhost test > select * from tb1;
MySQL数据类型
整形
数据类型
存储需求
TINYINT
8位
SMALLINT
16位
MEDIUMINT
24位
INT
32位
BIGINT
64位
浮点型
数据类型
存储需求
FLOAT(M,D)
M是数字总位数,D是小数点后面的位数
DOUBLE(M,D)
日期时间型
列类型
存储需求
范围
YEAR
8位
1901~2155
TIME
24位
-838:59:59~838:59:59
DATE
24位
1000.01.01~9999.12.31
DATETIME
64位
1000.01.01 00:00:00~9999.12.31 23:59:59
TIMESTAMP
32位
1970.01.01 00:00:01~2037 年某时
字符类型
列类型
存储需求
CHAR(M)
固定长度,M个字节,0<=<M<=255
VARCHAR(M)
可变长度,L+1个字节,L<=M且0<=M<=2^16 -1
TINYTEXT
L+1个字节,L<2^8
TEXT
L+1个字节,L<2^16
MEDIUMTEXT
L+1个字节,L<2^24
LONGTEXT
L+1个字节,L<2^32
ENUM(‘value1’,‘value2’,…)
1或2个字节,最多2^16 -1个值
SET(‘value1’,‘value2’,…)
1、2、3、4或8个字节,最多64个成员
MySQL约束
主键约束
NOT NULL和UNIQUE的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
root@localhost test > create table tb3( -> id smallint unsigned AUTO_INCREMENT PRIMARY KEY, -> username varchar(30) NOT NULL -> ); root@localhost test > show columns from tb3; root@localhost test > insert tb3(username) values('Tom'); root@localhost test > insert tb3(username) values('John'); root@localhost test > select * from tb3;
非空约束
NOT NULL指示某列不能存储NULL值。在默认的情况下,表的列接受NULL值。
NULL,字段值可以为空
NOT NULL,字段值禁止为空
1 2 3 4 5 6
root@localhost test > create table tb2( -> username varchar(20) NOT NULL, -> age tinyint unsigned NULL -> ); root@localhost test > insert tb2 values('tom',NULL); # ok root@localhost test > insert tb2 values(NULL,25); # error