SQL数据定义语言-DDL语句
DDL语句部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
| 语句 | 释义 |
|---|---|
| CREATE DATABASE | 创建新数据库 |
| ALTER DATABASE | 修改数据库 |
| CREATE TABLE | 创建新表 |
| ALTER TABLE | 变更(改变)数据库表 |
| DROP TABLE | 删除表 |
| DELIMITER | 分隔符 |
| CREATE INDEX | 创建索引(搜索键) |
| DROP INDEX | 删除索引 |
1. 设置root账户
其一:
mysql -u root -p
回车即可,因为还没有root密码。下来根据提示输入y表示新建root。然后是连续输入两次root密码。接下来就是一路输入y后回车就可以了。
其二:
mysql > mysql -u root -p 所要设置的密码
需要修改密码的话:
mysql > mysql -u root -p 已经设置的旧密码 password 所要设置的新密码
2. 使用数据库:
登录数据库
#mysql -u root -p
切换数据库
mysql > use 数据库名称;
更新数据库使之改动生效
mysql > flush privileges;
3. 创建数据库信息
新建数据库
mysql > create database 数据库名字 default character set utf8mb4;
如果不存在创建数据库
mysql > create database if not exists 数据库名字;
创建数据库表
mysql > create table 表名称(列名1 类型1,列名2 类型2);
4. 查看
查看数据库信息
| 语句 | 释义 |
|---|---|
| show databases; | 显示已有的数据库 |
| show create database 数据库名字; | 查看创建的数据库信息 |
| select database(); | 查看当前数据库 |
| select host,user from mysql.user; | 显示已经建立的用户 |
| select now(); | 查看当前时间 |
| show warngings; | 查看数据库警告信息 |
查看数据表信息
| 语句 | 释义 |
|---|---|
| show tables; | 显示已有的数据表 |
| show create table 数据表名字; | 查看创建的表信息 |
| desc 数据表名字; | 查看数据表属性 |
5. 更改信息
更改数据库编码
mysql > alter database 数据库名字 character set utf8mb4;
更改表名
mysql > rename table 表名 to 新表名;
更改表结构
| 固有参数 | 释义 |
|---|---|
| add | 添加列 |
| modify | 修改数据类型 |
| change | 修改列名 |
| drop | 删除列 |
用法:
mysql > alter table 表名字 固有参数 列名 类型 [完整性约束条件];
添加主键
mysql > alter table 表名 add primary key(字段名称...);
删除主键
mysql > alter table 表名 drop primary key;
6. 删除数据库信息
删除数据库
mysql > drop database 数据库名字;
删除数据库表
mysql > use 数据库;
#进入所有删除的数据库
mysql > drop table 数据库的表;
#删除需要删除的表
7. 使用数据库
mysql > use 所要使用的数据库名字;
这里,use 语句可以通告MySQL把db_name数据库作为默认(当前)数据库使用,用于后续语句。该数据库保持为默认数据库,直到语段的结尾,或者直到出现下一个不同的use语句
8. 删除账户及权限
mysql > drop user 用户名@'%';
mysql > drop user 用户名@ localhost;
mysql > drop user 用户名@'192.168.1.33_';
9. 退出数据库
离开mysql:输入
mysql > \q
或者
mysql > quit
10. 增删改综合示例
mysql > create database if not exists 数据库名字 default character set utf8mb4;
#创建数据库,避免重复数据库报错
mysql > use 数据库名字;
#进入数据库
mysql > CREATE TABLE 表1(ID int,Name varchar(255));
#创建数据库表
mysql > alter database 数据库名字 character set utf8mb4;
#更改数据库编码
mysql > rename table 表1 to 新表名;
#更改数据表名
mysql > alter table 新表名 add 新增列名 int;
#新增列名
mysql > drop table 数据库的表;
#删除需要删除的表
mysql > drop database 数据库名字;
#删除需要删除的数据库
11. 索引
索引特点
索引在 MySQL 中也叫"键",是储存引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其是当表中数据量越来越大时,索引对于性能的影响愈发重要。
- 索引优化是对查询性能优化最有效的手段
- 索引能够轻易将查询性能提升好几个数量级
- 索引相当于字典音序表,可用于定向区域查找
- 索引的创建和维护会小号很多时间和磁盘,但大大提升了查询速度
索引类型
| 类型 | 释义 |
|---|---|
| INDEX | 普通索引 |
| UNIQUE | 唯一索引 |
| FULLTEXT | 全局索引 |
| SPATIAL | 空间索引 |
查看索引类型,可在查看创建表类型中查看
SHOW CREATE TABLE 表名;
索引语法
创建表时
CREATE TABLE 表名(
字段名1 数据类型 [完整性约束条件...],
字段名2 数据类型 [完整性约束条件...],
[UNIQUE | FULLTEXT | SPATIAL ] INDEX | KEY
[索引名] (字段名[(长度)] [ASC | DESC])
);
已有表中添加
CREATE [UNIQUE | FULLTEXT | SPATIAL ] INDEX | KEY
[索引名] (字段名[(长度)] [ASC | DESC]);
删除索引
DROP INDEX 索引名称 on 表名;
索引用法
列1设为主键,且自增长,列2设为指定索引列
INDEX 普通索引
mysql > CREATE TABLE 索引测试表(列1 INT primary key auto_increment,列2 varchar(20),INDEX 索引名 (列2));
或
mysql > CREATE TABLE 索引测试表(列1 INT primary key auto_increment,列2 varchar(20),KEY 索引名 (列2));
UNIQUE 唯一索引
mysql > CREATE TABLE 索引测试表2(列1 INT primary key auto_increment,列2 varchar(20),UNIQUE INDEX 索引名 (列2));
FULLTEXT 全文索引
mysql > CREATE TABLE 索引测试表2(列1 INT primary key auto_increment,列2 varchar(20),FULLTEXT INDEX 索引名 (列2));
多列索引
mysql > CREATE TABLE 索引测试表2(列1 INT primary key auto_increment,列2 varchar(20),INDEX 索引名 (列1,列2));
12. 分隔符
SQL默认结束分隔符为分号";",可试用delimiter变更
mysql > DELIMITER !
执行完毕后结束分隔符即变更为所设定的"!"符号。
来源:oschina
链接:https://my.oschina.net/u/2924779/blog/1925754