1、创建SQL语句 DDL语句
MySQL命令行参数:
Usage: mysql [OPTIONS] [database] //命令方式
-?, --help //显示帮助信息并退出
-I, --help //显示帮助信息并退出
--auto-rehash //自动补全功能,就像linux里面,按Tab键出提示差不多,下面有例子
-A, --no-auto-rehash //默认状态是没有自动补全功能的。-A就是不要自动补全功能
-B, --batch //ysql不使用历史文件,禁用交互
(Enables --silent)
--character-sets-dir=name //字体集的安装目录
--default-character-set=name //设置数据库的默认字符集
-C, --compress //在客户端和服务器端传递信息时使用压缩
-#, --debug[=#] //bug调用功能
-D, --database=name //使用哪个数据库
--delimiter=name //mysql默认命令结束符是分号,下面有例子
-e, --execute=name //执行mysql的sql语句
-E, --vertical //垂直打印查询输出
-f, --force //如果有错误跳过去,继续执行下面的
-G, --named-commands
-g, --no-named-commands
-i, --ignore-spaces //忽视函数名后面的空格.
--local-infile //启动/禁用 LOAD DATA LOCAL INFILE.
-b, --no-beep //sql错误时,禁止嘟的一声
-h, --host=name //设置连接的服务器名或者Ip
-H, --html //以html的方式输出
-X, --xml //以xml的方式输出
--line-numbers //显示错误的行号
-L, --skip-line-numbers //忽略错误的行号
-n, --unbuffered //每执行一次sql后,刷新缓存
--column-names //查寻时显示列信息,默认是加上的
-N, --skip-column-names //不显示列信息
-O, --set-variable=name //设置变量用法是--set-variable=var_name=var_value
--sigint-ignore //忽视SIGINT符号(登录退出时Control-C的结果)
-o, --one-database //忽视除了为命令行中命名的默认数据库的语句。可以帮跳过日志中的其它数据库的更新。
--pager[=name] //使用分页器来显示查询输出,这个要在linux可以用more,less等。
--no-pager //不使用分页器来显示查询输出。
-p, --password[=name] //输入密码
-P, --port=# //设置端口
--prompt=name //设置mysql提示符
--protocol=name //使用什么协议
-q, --quick //不缓存查询的结果,顺序打印每一行。如果输出被挂起,服务器会慢下来,mysql不使用历史文件。
-r, --raw //写列的值而不转义转换。通常结合--batch选项使用。
--reconnect //如果与服务器之间的连接断开,自动尝试重新连接。禁止重新连接,使用--disable-reconnect。
-s, --silent //一行一行输出,中间有tab分隔
-S, --socket=name //连接服务器的sockey文件
--ssl //激活ssl连接,不激活--skip-ssl
--ssl-ca=name //CA证书
--ssl-capath=name //CA路径
--ssl-cert=name //X509 证书
--ssl-cipher=name //SSL cipher to use (implies --ssl).
--ssl-key=name //X509 密钥名
--ssl-verify-server-cert //连接时审核服务器的证书
-t, --table //以表格的形势输出
--tee=name //将输出拷贝添加到给定的文件中,禁时用--disable-tee
--no-tee //根--disable-tee功能一样
-u, --user=name //用户名
-U, --safe-updates //Only allow UPDATE and DELETE that uses keys.
-U, --i-am-a-dummy //Synonym for option --safe-updates, -U.
-v, --verbose //输出mysql执行的语句
-V, --version //版本信息
-w, --wait //服务器down后,等待到重起的时间
--connect_timeout=# //连接前要等待的时间
--max_allowed_packet=# //服务器接收/发送包的最大长度
--net_buffer_length=# //TCP / IP和套接字通信缓冲区大小。
--select_limit=# //使用--safe-updates时SELECT语句的自动限制
--max_join_size=# //使用--safe-updates时联接中的行的自动限制
--secure-auth //拒绝用(pre-4.1.1)的方式连接到数据库
--server-arg=name //Send embedded server this as a parameter.
--show-warnings //显示警告
1.1、数据库操作
// SQL命令用大写作为普遍的使用规范。
// 创建数据库
CREATE DATABASE 数据库名;
// 判断数据库是否存在并设置字符集编码
CREATE DATABASE 数据库名 [DEFAULT CHARACTER SET '字符编码']; //不能使用 “-”
// 进入一个数据库
USE 数据库名;
// 查看当前数据库
SELECT database();
// 查看数据库
SHOW DATABASES;
SHOW DATABASES LIKE '匹配模式'; // _单个匹配 %多个匹配;可以同时使用
// 查看数据库的创建信息和字符集编码
SHOW CREATE DATABASE 数据库名;
// 更改数据库信息 (一般不用)
ALTER DATABASE 数据库名 CHARSET 字符集;
// 删除数据库
DROP DATABASE 数据库名;
DROP DATABASE [IF EXISTS] 数据库名; // IF EXISTS 判断是否存在 存在删除
1.2、数据表操作
// 创建数据表必须同时创建表中的字段
CREATE TABLE 表名(
id TINYINT PRIMARY KEY auto_increment,// PRIMARY KEY 主键 auto_increment自动增长
name VARCHAR(25),
gender boolean,
age INT COMMENT '年龄',
department VARCHAR(20),
salary DOUBLE(7,2)
)ENGINE=INNODB DEFAULT CHARSET=utf8; // ENGINE=INNODB 指定数据库使用的执行引擎,INNODB才支持事务。
CREATE TABLE 数据库名.表名(
数据的字段信息
)DEFAULT CHARSET 'utf8';
/*约束条件:
NOT NULL : 用于控制字段的内容一定不能为空(NULL)。
UNIQUE : 控件字段内容不能重复,一个表允许有多个 Unique 约束。
PRIMARY KEY: 用于控件字段内容不能重复,但它在一个表只允许出现一个。
FOREIGN KEY REFERENCES : 1、约束用于预防破坏表之间连接的动作,FOREIGN KEY 约束。
2. 也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
CHECK: 用于控制字段的值范围。
DEFAULT: 用于设置默认值。
*/
// 查看数据库中的所有表
SHOW TABLES;
// 查看表结构
DESC 表名; // 全称 DESCRIBE 表名;
// 查询mysql表字段信息的sql语句
SHOW DATABASES //列出 MySQL Server 数据库。
SHOW TABLES [FROM db_name] //列出数据库数据表。
SHOW CREATE TABLES tbl_name //数据表结构。
SHOW TABLE STATUS //列出数据表及表状态信息。
SHOW COLUMNS FROM tbl_name [FROM db_name] //列出资料表字段
SHOW FIELDS FROM tbl_name [FROM db_name] // 查看表结构
SHOW FULL COLUMNS FROM tbl_name [FROM db_name] //列出字段及详情
SHOW FULL FIELDS FROM tbl_name [FROM db_name] //列出字段完整属性
SHOW INDEX FROM tbl_name [FROM db_name] //列出表索引。
SHOW STATUS //列出 DB Server 状态。
SHOW VARIABLES //列出 MySQL 系统环境变量。
SHOW PROCESSLIST //列出执行命令。
SHOW GRANTS FOR user //列出某用户权限
// 修改表名
RENAME TABLE 修改的表名 to 新表名
// 添加字段
ALTER TABLE 表名 ADD 字段名 限制条件,ADD 字段名 限制条件;
// 修改一列类型
ALTER TABLE 表名 MODIFY 字段名 类型 [完整性约束条件] [firse | after 字段名];
一: 修改表信息
修改表名
ALTER TABLE test_a RENAME TO sys_app;
修改表注释
ALTER TABLE sys_application COMMENT'系统信息表';
二:修改字段信息
修改字段类型和注释
ALTER TABLE sys_application MODIFY COLUMN app_name varchar(20) COMMENT '应用的名称';
修改字段类型
ALTER TABLE sys_application MODIFY COLUMN app_name TEXT;
设置字段允许为空
ALTER TABLE sys_application MODIFY COLUMN description VARCHAR(255) NULL COMMENT '应用描述';
增加一个字段,设好数据类型,且不为空,添加注释
ALTER TABLE sys_application ADD `url` VARCHAR(255) NOT NULL COMMENT '应用访问地址';
增加主键
ALTER TABLE t_app ADD aid INT(5) NOT NULL , ADD PRIMARY KEY (aid);
增加自增主键
ALTER TABLE t_app ADD aid INT(5) NOT NULL AUTO_INCREMENT , ADD PRIMARY KEY (aid);
修改为自增
ALTER TABLE t_app MODIFY COLUMN aid INT(5) AUTO_INREMENT;
修改字段名字(要重新指定该字段的类型)
ALTER TABLE t_app CHANGE NAME app_name VARCHAR(20) NOT NULL;
删除字段
ALTER TABLE t_app DROP aid;
在某个字段后增加字段
ALTER TABLE t_app ADD COLUMN gateway_id INT NOT NULL DEFAULT 0 AFTER `aid`; #(在 aid 字段后面添加 gateway_id 字段)
调整字段顺序
ALTER TABLE t_app CHANGE gateway_id gateway_id INT NOT NULL AFTER aid ; #(注意gateway_id出现了2次,把gateway_id放在aid之前)
修改字段默认值语法:
ALTER TABLE 表名 ALTER COLUMN 字段名 DROP DEFAULT; (若本身存在默认值,则先删除)
ALTER TABLE 表名 ALTER COLUMN 字段名 SET DEFAULE 默认值;(若本身不存在则可以直接设定)
// 删除一个字段
ALTER TABLE 表名 DROP 字段;
// 删除主键
ALTER TABLE 表名 DROP PRIMARY KEY;
ALTER TABLE table_name DROP PRIMARY KEY;
// 创建多个主键,多个外键关联
CONSTRAINT 外键名称 FOREIGN KEY 创建外键名称 REFERENCES 表名(字段名) ON 约束条件
CREATE TABLE `score` (
`sid` int NOT NULL AUTO_INCREMENT ,
`student_id` int NOT NULL ,
`corse_id` int NOT NULL ,
`number` int NOT NULL ,
PRIMARY KEY (`sid`, `student_id`, `corse_id`),
CONSTRAINT `student_id` FOREIGN KEY (`student_id`) REFERENCES `student` (`sid`) ON DELETE NO ACTION,
CONSTRAINT `corse_id` FOREIGN KEY (`corse_id`) REFERENCES `course` (`cid`) ON DELETE NO ACTION
);
-- PS:字段名包裹用的是符号“ ` ”,而不是英文的“ '' ”,其他地方用“ '' 或者 "" ”包裹内容。
1.2.1、数字型
类型 |
大小 |
范围(有符号) |
范围(无符号) |
用途 |
TINYINT |
1 字节 |
(-128,127) |
(0,255) |
小整数值 |
SMALLINT |
2 字节 |
(-32 768,32 767) |
(0,65 535) |
大整数值 |
MEDIUMINT |
3 字节 |
(-8 388 608,8 388 607) |
(0,16 777 215) |
大整数值 |
INT或INTEGER |
4 字节 |
(-2 147 483 648,2 147 483 647) |
(0,4 294 967 295) |
大整数值 |
BIGINT |
8 字节 |
(-9 233 372 036 854 775 808,9 223 372 036 854 775 807) |
(0,18 446 744 073 709 551 615) |
极大整数值 |
FLOAT |
4 字节 |
(-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) |
0,(1.175 494 351 E-38,3.402 823 466 E+38) |
单精度 |
DOUBLE |
8 字节 |
(1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) |
0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) |