一、mysql相关命令
1.连接数据库后快捷命令
\?: 类似于帮助,等于 \h 或 help \c: 中断当前执行的语句(如果中断不了,一定是引号没有凑成一对) \r: 重新连接数据库 \d: 修改sql语句结束符 \e: 把内容写入\e,一起执行 \G: 将数据分别列出并垂直展示 \g: 表示命令结束,等价于; \q: 退出,等于 quit 或 exit \h: 类似于帮助,等于 \? 或 help help: 类似于 \h和\? help还可以查看语法 \t: 不写入文件 \T: 将执行过程和命令打印到指定的文件中(只支持本次会话,断开就不在保存了) \p: 将执行的命令在打印一遍 \R: 修改命令提示符 \.: 执行sql文件 等于 source \s: 获取服务器信息 \!: 在数据库内执行命令行命令 \u: 切换数据库 等于 use \C: 切换字符集 \W: 执行语句时加一条警告 \w: 执行语句时加不加警告
2.help命令
#查看帮助 mysql> help #查看help用法 mysql> help contents #查看create可以添加的内容 mysql> help create #查看create添加库的语法 mysql> help CREATE DATABASE
3.客户端命令 mysqladmin
1.设置密码 mysqladmin -uroot password '123' 2.修改密码 mysqladmin -uroot -p123 password '456' 3.关闭数据库 mysqladmin -uroot -p123 -S /tmp/mysql.sock shutdown 4.库外建库 [root@db01 ~]# mysqladmin -uroot -p123 create mysqladmin [root@db01 ~]# mysql -uroot -p123 -e 'create database ku2;' 5.库外删库 [root@db01 ~]# mysqladmin -uroot -p123 drop lhd Do you really want to drop the 'lhd' database [y/N] y Database "lhd" dropped 6.查看数据的配置参数 [root@db01 ~]# mysqladmin -uroot -p123 variables [root@db01 ~]# mysqladmin -uroot -p123 variables | grep server_id [root@db01 ~]# mysqladmin -uroot -p123 variables | grep socket 7.查看mysql状态 [root@db01 ~]# mysqladmin -uroot -p123 status Uptime: 4615 mysql运行时间(单位是秒) Threads: 2 线程数量 Questions: 21534 查询数据的数据量 Slow queries: 0 慢查询语句的数量 Opens: 99 mysqld程序打开了多少表 Flush tables: 1 执行flush,reload,refresh命令的次数 Open tables: 83 现在被打开的表的数量 Queries per second avg: 4.66 每秒平均查询数 8.检测mysql是否存活 [root@db01 tmp]# mysqladmin -uroot -p123 ping mysqld is alive 9.刷新mysql [root@db01 tmp]# mysqladmin -uroot -p123 reload
二、SQL语句
sql语句语义种类
DDL: Data Definition Language 数据定义语言
DCL: Data Control Language 数据控制语言
DML: Data Manipulation Language 数据操作语言
DQL: Data Query Language 数据查询语句
一、DDL语句—数据定义语言(CREATE,drop,use,show,alter,add)
对库的操作
1)语法
mysql> help create database; Syntax: CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ... create_specification: [DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name
2)建库语句1
mysql> create database ku3; Query OK, 1 row affected (0.00 sec) mysql> create schema ku4; Query OK, 1 row affected (0.00 sec)
3)建库语句2
#当库已存在时会提示报错 mysql> create database ku3; ERROR 1007 (HY000): Can't create database 'ku3'; database exists #使用选项忽略报错 mysql> create database if not exists ku3; Query OK, 1 row affected, 1 warning (0.00 sec)
4)查看建库语句
mysql> show create database ku3;
5)建库语句3
#指定字符集建库 mysql> create database lhd charset utf8 ; Query OK, 1 row affected (0.00 sec) #最好在指定字符集同时也指定一下校验规则 mysql> create database lhd charset utf8 collate utf8_general_ci; Query OK, 1 row affected (0.00 sec)
6)删库
mysql> drop database oldboy; Query OK, 0 rows affected (0.00 sec)
7)修改库
mysql> show create database lhd; +----------+--------------------------------------------------------------+ | Database | Create Database | +----------+--------------------------------------------------------------+ | lhd | CREATE DATABASE `lhd` /*!40100 DEFAULT CHARACTER SET utf8 */ | +----------+--------------------------------------------------------------+ 1 row in set (0.00 sec) #修改字符集为 utf8mb4 mysql> alter database lhd charset utf8mb4; Query OK, 1 row affected (0.01 sec) mysql> show create database lhd; +----------+-----------------------------------------------------------------+ | Database | Create Database | +----------+-----------------------------------------------------------------+ | lhd | CREATE DATABASE `lhd` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ | +----------+-----------------------------------------------------------------+ 1 row in set (0.00 sec)
针对表的操作
1)语法
mysql> help create table; Syntax: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name(create_definition,...) [table_options] [partition_options]
2)建表语句
mysql> create table qiudao; ERROR 1046 (3D000): No database selected #建表必须先进入库中 mysql> use lhd Database changed mysql> create table qiudao; ERROR 1113 (42000): A table must have at least 1 column #建的表必须有一列 mysql> create table qiudao(id); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1 #创建列的时候必须指定数据类型 mysql> create table qiudao(id int); Query OK, 0 rows affected (0.03 sec)
3)数据类型
int: 整数类型 -2^31 - 2^31-1 (-2147483648 - 2147483647) tinyint: 最小整数 -128 - 127 #一般用在年龄 varchar: 字符类型 (变长,最大65535) char: 字符类型 (定长,最大255) enum: 枚举类型 #一般用在性别,指定的选项选一个 datetime: 时间类型 年月日时分秒 #以前使用 timestamp #两者所能存储的时间范围不一样 timestamp所能存储的时间范围为:'1970-01-01 00:00:01.000000' 到 '2038-01-19 03:14:07.999999'。 datetime所能存储的时间范围为:'1000-01-01 00:00:00.000000' 到 '9999-12-31 23:59:59.999999'。
4)数据类型int使用
#查看表属性 mysql> desc qiudao; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 1 row in set (0.00 sec) #第一种情况,插入数据,超过数据类型范围,直接取最大值写入 mysql> insert into lhd values(11111111111); Query OK, 1 row affected, 1 warning (0.00 sec) mysql> select * from lhd; +------------+ | id | +------------+ | 2147483647 | +------------+ 1 row in set (0.00 sec) #以上结果有问题,执行 set sql_mode='STRICT_TRANS_TABLES'; #第一种情况,插入数据,超过数据类型范围,直接报错 mysql> insert into lhd values(11111111111); ERROR 1264 (22003): Out of range value for column 'id' at row 1 #插入的数据不能超过int类型的范围 mysql> insert into lhd values(2147483648); ERROR 1264 (22003): Out of range value for column 'id' at row 1 mysql> insert into lhd values(2147483647); Query OK, 1 row affected, 1 warning (0.00 sec)
5)数据类型enum使用
#创建一个表,性别为枚举类型 mysql> create table qiudao(id int,gender enum('male','female','qiudao')); Query OK, 0 rows affected (0.01 sec) #查看表结构 mysql> desc qiudao; +--------+--------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+--------------------------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | gender | enum('male','female','qiudao') | YES | | NULL | | +--------+--------------------------------+------+-----+---------+-------+ 2 rows in set (0.01 sec) #测试插入数据 mysql> insert into qiudao values(1,'nan'); ERROR 1265 (01000): Data truncated for column 'gender' at row 1 #添加数据必须填写枚举类型指定的选项,其他的值填写都报错 mysql> insert into qiudao values(1,'male'); Query OK, 1 row affected (0.00 sec)