首页 > 代码库 > SQL基础

SQL基础

表相关:

创建表

CREATE TABLE user (id int UNSIGNED NOT NULL PRIMARYKEY,name VARCHAR(20) NOT NULL,age tinyint UNSIGNED);

//创建表

技术分享

 

CREATE TABLE student (id int UNSIGNED NOT NULL,name VARCHAR(20)NOT NULL,age tinyint UNSIGNED,PRIMARY KEY(id,name));

//创建表,定义id和name为主键

 

技术分享

 

 

HELP CREATE TABLE;

//查看创建表相关语句

 

SHOW TABLE STATUS LIKE ‘student‘\G

//查看表信息

 

技术分享

 

 

删除表

DROP TABLE IF EXISTS student;        //不可逆

 

 

修改表

ALTER TABLE user ADD gender ENUM(‘m‘,‘f‘);  

//使用ADD给user表添加性别字段,且指定取值范围是m和f

技术分享

 

 

ALTER TABLE user CHANGE id sid int UNSIGNED NOT NULL;

//使用CHANGE修改id字段名称为sid

 

技术分享

 

ALTER TABLE user MODIFY age int;

//使用MODIFY修改age字段的属性

技术分享

 

 

ALTER TABLE user ALTER gender SET DEFAULT ‘m‘;

//使用ALTER给gender字段设置默认值

技术分享

 

ALTER TABLE user ALTER gender DROP DEFAULT;       //取消默认值

 

ALTER TABLE user ADD INDEX(age);        //把age字段作为索引

技术分享

 

ALTER TABLE user DROP INDEX age;           //取消age索引

技术分享

 

 

ALTER TABLE user ADD UNIQUE KEY(name);       //给name字段添加唯一约束

 

技术分享

 

 

索引相关

CREATE INDEX age ON user (age);        

//使用user表的age字段创建索引,索引名为age

 

DROP INDEX age ON user;

//删除user表中名为age的索引

 

 

增删改查

INSERT

INSERT user VALUES(1,‘user01‘,13,‘m‘),(2,‘usr02‘,15,‘f‘);     //增加两条数据

技术分享

 

INSERT user (sid,name) VALUES (3,‘user03‘),(4,‘user04‘);  //只给出个别字段的值

技术分享

 

 

SELECT

SELECT * FROM user WHERE sid<3;          //查询id<3的记录

技术分享

 

SELECT * FROM user WHERE gender is NOT NULL;       //查找gender字段非空的记录

技术分享

 

SELECT * FROM user WHERE sid>=2 AND sid<=4;

SELECT * FROM user WHERE sid BETWEEN 2 AND 4;

//查找sid在2到4之间的记录

 

SELECT * FROM user WHERE gender=‘m‘;        //查找性别为男性的记录

 

SELECT * FROM user WHERE name LIKE ‘u%‘;      

//模糊查找,查找所有u开头的用户,%表示匹配任意长度的任意字符

 

SELECT * FROM user WHERE name LIKE ‘user0_‘;

//模糊查找,_表示任意单个字符

 

SELECT * FROM user WHERE name RLIKE‘^u.*0.$‘;

//使用正则表达式进行匹配,效率低,不建议使用

 

SELECT sid as uid,name as uname FROMuser;

//只显示sid和name字段,且使用别名来显示字段名

技术分享

 

 

DELETE

DELETE FROM user WHERE sid=3;

//删除sid=3的记录,如果不使用WHERE进行条件匹配,将会删除所有记录

 

 

UPDATE

UPDATE user SET gender=‘f‘ WHERE sid=4;

//修改sid=4的user的性别为女,如果不使用WHERE进行条件匹配,讲会对所有user进行更新操作

 

 

账号和权限相关

创建账号

CREATE USER ‘wpuser‘@‘%‘ IDENTIFIED BY ‘wppass‘;

//创建wpuser账号,允许任意ip地址登录,密码为wppass

 

CREATE USER ‘wpuser‘@‘localhost‘ IDENTIFIED BY ‘wppass‘;

//允许localhost登录

 

技术分享

 

 

 

删除账号

DROP USER ‘wpuser‘@‘localhost‘;      //删除wpuser从localhost登录的权限

技术分享

 

 

授权

GRANT SELECT,INSERT ON testdb.* TO ‘wpuser‘@‘%‘;  

//授权wpuser能够对testdb数据库的所有数据表进行查询和增加操作

技术分享

 

 

GRANT ALL ON testdb.* TO ‘dbadmin‘@‘%‘ IDENTIFIED BY‘12345‘;

//创建dbadmin用户的同时,授予对testdb数据库的所有权限

 

 

查看权限

SHOW GRANTS FOR CURRENT_USER;         //查看当前用户的权限

技术分享

 

SHOW GRANTS FOR ‘wpuser‘@‘%‘;          //查看某一用户的权限

 

 

回收权限

REVOKE DELETE ON testdb.* FROM ‘dbadmin‘@‘%‘;

//回收dbadmin的删除权限

技术分享

 

 

注意:MariaDB服务进程启动时会读取mysql库中的所有授权表至内存中

(1)    GRANT或REVOKE等执行权限操作会保存于表中,MariaDB的服务进程会自动重读授权表

(2)    对于不能够或不能及时重读授权表的命令,可手动让MariaDB的服务进程重读授权表,执行命令:FLUSHPRIVILEGES;

 

 

 

 

 

 


SQL基础