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语句:分组函数、distinctgroup  byhaving、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

posted @ 2022-07-22 10:56  DHaiLin  阅读(226)  评论(0编辑  收藏  举报