MYSQL语法
MySQL的语法规范
1.不区分大小写,但建议关键字大写,表名、列名小写 2.每条命令最好用分号结尾 3.每条命令根据需要,可以进行缩进 或换行 4.注释 单行注释:#注释文字 单行注释:-- 注释文字 多行注释:/* 注释文字 */
创建数据库
CREATE DATABASE语句用于创建一个新的数据库。语法是:
SQL> CREATE DATABASE DATABASE_NAME;
例子,创建一个名为 EXAMPLE 数据库:
SQL> CREATE DATABASE EXAMPLE;
删除数据库
使用DROP DATABASE语句用于删除现有的数据库。语法是:
SQL> DROP DATABASE DATABASE_NAME;
注意:要创建或删除,应该有数据库服务器上管理员权限。请注意,删除数据库将损失所有存储在数据库中的数据。
例子,删除我们刚刚建好的数据库:
SQL> DROP DATABASE EXAMPLE;
数据库其他操作
1.查看当前所有的数据库 show databases; 2.打开指定的库 use 库名 3.查看当前库的所有表 show tables; 4.查看其它库的所有表 show tables from 库名;
创建表
CREATE TABLE语句用于创建一个新表。语法是:
SQL> CREATE TABLE table_name ( column_name column_data_type, column_name column_data_type, column_name column_data_type ... );
例子,下面的SQL语句创建一个有四个属性的 Students 表:
SQL> CREATE TABLE Students ( id INT NOT NULL, age INT NOT NULL, name VARCHAR(255), major VARCHAR(255), PRIMARY KEY ( id ) );
查看表结构
desc table_name;
清空表数据
truncate table table_name;
删除表
DROP TABLE语句用于删除现有的表。语法是:
SQL> DROP TABLE [IF EXISTS] table_name;
例子,下面的SQL语句删除一个名为 Students 表:
SQL> DROP TABLE Students;
修改表
ALTER TABLE <表名> [修改选项] 修改选项的语法格式包括: { ADD COLUMN <列名> <类型> | CHANGE COLUMN <旧列名> <新列名> <新列类型> | ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT } | MODIFY COLUMN <列名> <类型> | DROP COLUMN <列名> | RENAME TO <新表名> | CHARACTER SET <字符集名> | COLLATE <校对规则名> } { ADD COLUMN <列名> <类型> #增加列 | CHANGE COLUMN <旧列名> <新列名> <新列类型> #修改列名&数据类型 | ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT } #修改某列的默认值 | MODIFY COLUMN <列名> <类型> #修改数据类型 | DROP COLUMN <列名> #删除列 | RENAME TO <新表名> #重命名表 (TO可省略不写,不影响) | CHARACTER SET <字符集名> #修改字符集(表的编码格式等) | COLLATE <校对规则名> } 字符集内用于字符比较和排序的一套规则 在 列2 后添加 列1: mysql> ALTER TABLE <表名> ADD <列名1> <数据类型>(长度) AFTER <列名2>; 将 列1 添加至表的第1列: mysql> ALTER TABLE <表名> ADD <列名1> <数据类型>(长度) FIRST; 将 列1 修改至 列2 后面: mysql> ALTER TABLE <表名> MODIFY <列名1> <数据类型>(长度) AFTER <列名2>;
-- 新增表字段 ALTER TABLE org_info ADD COLUMN is_sync_scenic VARCHAR(10) NULL DEFAULT NULL COMMENT 'false:不同步景区,true:同步景区'; -- 更新字段类型 ALTER TABLE order_visitor_rm MODIFY remark VARCHAR(1000);
索引的CURD
-- 查看索引 show index from 表名; -- 创建普通索引 CREATE INDEX 索引名 ON 表名(column_list); -- 创建唯一索引 CREATE UNIQUE 索引名 ON 表名(column_list); -- 创建主键索引 CREATE PRIMARY KEY 索引名 ON 表名(column_list); -- 修改表的方式创建普通索引 ALTER TABLE 表名 ADD INDEX 索引名 (column_list); -- 修改表的方式创建唯一索引 ALTER TABLE 表名 ADD UNIQUE 索引名(column_list); -- 修改表的方式创建主键索引(主键索引的索引名称是PRIMARY,多列则创建多个主键索引) ALTER TABLE 表名 ADD PRIMARY KEY 索引名(column_list); -- 修改表的方式创建全文索引(字符串数据类型) ALTER TABLE 表名 ADD fulltext 索引名(column_list); -- 修改表的方式删除索引 ALTER TABLE 表名 DROP INDEX 索引名; -- 修改表的方式删除主键索引 ALTER TABLE 表名 DROP PRIMARY KEY; -- 删除索引 DROP INDEX 索引名 ON 表名; -- 删除主键索引 ALTER TABLE 表名 DROP PRIMARY KEY; 索引列为一列时为单一索引; 多个列组合在一起创建的索引叫做联合索引
插入数据
语法 INSERT 如下,其中 column1, column2 ,依此类推的属性值:
SQL> INSERT INTO table_name VALUES (column1, column2, ...);
例子,下面的 INSERT 语句中插入先前创建的 Students 表:
SQL> INSERT INTO Students VALUES (1, 18, 'Mumu', 'Java');
查询数据
SELECT语句用于从数据库中检索数据。该语法的SELECT是:
SQL> SELECT column_name, column_name, ... FROM table_name1 [AS 别名] LEFT JOIN[RIGHT JOIN][INNER JOIN] table_name2 [AS 别名] ON table_name1.column... = table_name2.column... WHERE conditions [GROUP BY column... HAVING conditions] ORDER BY column... DESC[ASC] [LIMIT (pageNo - 1)*pageSize,pageNo*pageSize];
WHERE 子句可以使用比较操作符例如 =, !=, <, >, <=, >=,以及 BETWEEN 和 LIKE 等操作符。
例子,下面的 SQL 语句从 students 表左连接 course 表 查询出名称性张的学生,并将学生的姓名和年龄显示出来,按照学生 id进行倒序,并且进行分页,只查询出前10条:
SQL> SELECT name, age FROM students AS s LEFT JOIN course AS c ON c.student_id = s.id WHERE s.name like concat('张','%') ORDER BY s.id DESC [LIMIT 0,10] ;
更新数据
UPDATE语句用于更新数据。UPDATE语法为:
SQL> UPDATE table_name SET column_name = value, column_name = value, ... WHERE conditions;
例子,下面的 SQL 的 UPDATE 语句表示将 ID 为1的学生的 age 改为20:
SQL> UPDATE Students SET age=20 WHERE id=1;
关于delete语句给表取别名的用法
-- 错误语句 delete from security_role_permission rp where rp.permission_id in (2,3) and rp.role_id = 0 delete from security_role_permission as rp where rp.permission_id in (2,3) and rp.role_id = 0 -- 正确语句: delete rp from security_role_permission rp where rp.permission_id in (2,3) and rp.role_id = 0 delete rp from security_role_permission as rp where rp.permission_id in (2,3) and rp.role_id = 0
删除数据
DELETE语句用来删除表中的数据。语法DELETE是:
SQL> DELETE FROM table_name WHERE conditions;
例子,下面的 SQL DELETE 语句删除 ID 为1的学生的记录:
SQL> DELETE FROM Students WHERE id=1;
MySQL服务的登录和退出
方式一:通过mysql自带的客户端 只限于root用户 方式二:通过windows自带的客户端 登录: mysql 【-h主机名 -P端口号 】-u用户名 -p密码 退出: exit或ctrl+C
MySQL的查看服务器版本
查看服务器的版本 方式一:登录到mysql服务端 select version(); mysql -version 方式二:没有登录到mysql服务端 mysql -V
视图的创建
语法: CREATE VIEW 视图名 AS 查询语句;
视图数据CURD
1、查看视图的数据 ★ SELECT * FROM my_v4; SELECT * FROM my_v1 WHERE last_name='Partners'; 2、插入视图的数据 INSERT INTO my_v4(last_name,department_id) VALUES('虚竹',90); 3、修改视图的数据 UPDATE my_v4 SET last_name ='梦姑' WHERE last_name='虚竹'; 4、删除视图的数据 DELETE FROM my_v4;
某些视图不能更新
包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all 常量视图 Select中包含子查询 join from一个不能更新的视图 where子句的子查询引用了from子句中的表
视图逻辑的更新
#方式一: CREATE OR REPLACE VIEW test_v7 AS SELECT last_name FROM employees WHERE employee_id>100; #方式二: ALTER VIEW test_v7 AS SELECT employee_id FROM employees; SELECT * FROM test_v7;
删除视图
DROP VIEW test_v1,test_v2,test_v3;
查看视图结构
DESC test_v7; SHOW CREATE VIEW test_v7;
存储过程(点我)
参考:https://blog.csdn.net/weixin_44676935/article/details/117199960