SQL语句基础指令语法

来源:互联网 发布:数据不会说谎 编辑:程序博客网 时间:2024/06/05 04:55

SQL语句基础指令语法

    • SQL语句基础指令语法
      • 显示命令
      • DDL语句
        • CREATE
        • DROP
        • ALTER
      • DML语句
        • INSERT
        • DELETE
        • UPDATE
      • DCL语句
        • GRANT
        • REVOKE
      • DQL语句
        • SELECT

显示命令

显示当前数据库服务器中的数据库列表

mysql> SHOW DATABASES;

显示数据库中的数据表

mysql> USE 数据库名 #切换数据库mysql> SHOW TABLES; 

显示数据表的结构

mysql> DESCRIBE 表名;
mysql> DESC 表名;

查看支持的字符集

mysql> SHOW CHARACTER SET;

查看支持的排序规则

mysql> SHOW COLLATION;

查看支持的引擎

mysql> SHOW ENGINES\G;  #\G以行的形式显示

查看表中的索引

mysql> SHOW INDEXES FROM 表名\G;

查看表状态

mysql> SHOW TABLE STATUS LIKE '表名'\G;

DDL语句

DDL:数据的定义语言(Data Defination Language)

CREATE

创建用户

mysql> CREATE USER root@'172.18.%.%' IDENTIFIED BY 'password';

创建数据库

mysql> CREATE DATABASE 数据库名1;mysql> CREATE SCHEMA 数据库名2;mysql> CREATE DATABASE IF NOT EXISTS 数据库名3;

创建一个同表1相同的表2

mysql> CREATE TABLE2 SELECT * FROM1;

创建表

mysql> CREATE TABLE 表名 (id tinyint unsigned PRIMARY KEY,name varchar(20) NOT NULL, age tinyint UNSIGNED, sex char(1) DEFAULT "m" );

创建带有复合主键的表

mysql> CREATE TABLE 表名 (id int unsigned NOT NULL, name varchar (20) NOT NULL, age tinyint unsigned, sex char(1) DEFAULT "m", PRIMARY KEY(id,name));

创建索引

mysql> CREATE INDEX 索引名 ON 表名(索引字段);

DROP

删除用户

mysql> DROP USER root@'172.18.%.%;

删除数据库

mysql> DROP DATABASE 数据库名;mysql> DROP SCHEMA 数据库名;mysql> DROP DATABASE IF EXISTS 数据库名;

删除表

mysql> DROP TABLES 表名;

删除索引

mysql> DROP INDEX 索引名 ON 表名;

ALTER

修改表名

mysql> ALTER  TABLE 旧表名 RENAME 新表名;

表中插入字段

mysql> ALTER TABLE 表名 ADD 字段名 char(11) AFTER 插入位置的前一个字段名;

修改字段数据类型

mysql> ALTER TABLE 表名 MODIFY 字段名 新数据类型;

修改字段名称

mysql> ALTER TABLE 表名 CHANGE COLUMN 旧字段 新字段 char(11);

添加唯一键

mysql> ALTER TABLE 表名 ADD UNIQUE KEY(字段名);

添加指定枚举值的字段

mysql> ALTER TABLE 表名 ADD 字段名 ENUM('值1','值2');

添加索引

mysql> ALTER TABLE 表名 ADD INDEX(字段名);

删除字段

mysql> ALTER TABLE 表名 DROP COLUMN 字段名;

DML语句

DML:数据的处理语言(Data Manipulation Language )

INSERT

赋值表中全部字段

mysql> INSERT INTO 表名 (字段1,字段2,字段3,字段4)VALUES(值1,'值2',值3,'值4');

赋值表中指定字段

mysql> INSERT INTO 表名 (字段1,字段2)VALUES(值1,'值2');

省略字段名称赋值

mysql> INSERT INTO 表名 VALUES (值1,'值2',值3,'值4');

同时为多条记录赋值

mysql> INSERT INTO 表名 VALUES (值1,'值2',值3,'值4'),(值1,'值2',值3,'值4');

向表2中追加表1字段的值,前提表2已经存在,且与表1表结构相同

mysql> INSERT INTO2 SELECT * FROM1;

DELETE

清空表的内容

mysql> TRUNCATE TABLE 表名;   #速度快,但不记录日志mysql> DELETE FROM 表名;      #速度稍慢,但会记录日志

删除记录

mysql> DELETE FROM 表名 WHERE id=4;

UPDATE

注意:更改时不要忘记敲WHERE子句,不然会改掉全部记录对应字段的值
更改指定记录某字段的值

mysql> UPDATE 表名 SET age=21 WHERE name='li';

同时更改一条记录多个字段的值

mysql> UPDATE 表名 SET age=19,sex='m' WHERE id=5;

DCL语句

DCL:数据授权语言(Data Control Language)

GRANT

授权用户指定权限

mysql> GRANT SELECT,INSERT ON 数据库名.表名 TO root@'172.18.%.%';mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO user@'localhost';

授权用户全部权限

mysql> GRANT ALL ON 数据库名.* TO root@'172.18.%.%';

授权并创建用户

mysql> GRANT ALL ON *.* TO wang@'172.18.%.%' IDENTIFIED BY "password";  mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON mydb.* TO user@localhost IDENTIFIED BY "";  #设置空口令

REVOKE

取消指定授权

mysql> REVOKE SELECT,INSERT ON 数据库名.* FROM root@'172.18.%.%';

取消授权

mysql> REVOKE ALL ON 数据库名.* FROM root@'172.18.%.%';

DQL语句

DQL:数据查询语言(Data Query Language)

SELECT

查询数据库名

mysql> SELECT DATABASE();

查询当前数据库版本

mysql> SELECT VERSION();

查看当前登录的用户

mysql> SELECT USER();

查询表中全部字段

mysql> SELECT * FROM 表名;

查询表中指定字段

mysql> SELECT 字段1,字段2,字段3 FROM 表名;

为搜索字段添加别名

mysql> SELECT id AS 员工编号,name AS 姓名 FROM 表名;

为表名添加别名

mysql> SELECT 字段1,字段2 FROM 表名 AS 表别名;

查寻指定区间内的字段

mysql> SELECT * FROM 表名 WHERE 字段 >=18 and 字段 <=20;mysql> SELECT * FROM 表名 WHERE 字段 BETWEEN 18 字段 20;

对查询的指定字段进行排序

mysql> SELECT * FROM 表名 WHERE 字段1 BETWEEN 16 字段1 22 ORDER BY 字段1;mysql> SELECT * FROM 表名 WHERE 字段1 BETWEEN 16 字段1 22 ORDER BY 字段1 DESC;  #倒序排

跳过一个显示两个

mysql> SELECT * FROM 表名 WHERE 字段1 BETWEEN 16 字段1 22 ORDER BY 字段1 LIMIT 1,2;

通配符的模糊查询

mysql> SELECT * FROM 表名 WHERE name LIKE "l%" ;

正则表达式的模糊查询

mysql> SELECT * FROM 表名 WHERE name RLIKE "l.*" ;mysql> SELECT * FROM 表名 WHERE name RLIKE "^l.$" ;

查询空值

mysql>  SELECT * FROM 表名 WHERE age IS NULL;

查询非空值

mysql>  SELECT * FROM 表名 WHERE age IS NOT NULL;

查询某字段的特定值

mysql>  SELECT * FROM 表名 WHERE 字段名 IN ('值1','值2');

多表查询

mysql> SELECT s.id,e.name FROM 表名1 AS s,表名2 AS e WHERE s.id=e.id;mysql> SELECT s.id,e.name FROM 表名1 AS s,表名2 AS e WHERE s.id=e.id and s.name RLIKE '.*[no].*';
原创粉丝点击