*sql命令语句## 标题
Mysql的登录
方法一:Mysql -h链接## ip -u用户名 -p密码
方法二:mysql --host= 链接ip --user=用户名 --password=密码
如果显示使用我们的密码则会进行警告
退出登录的方法: exit quit ctrl+c
sql语法是关系型数据库都需要遵守的一个规范,多个关系型数据库之间,有很多语法相互重合.
sql规范相当于普通话,其他关系型数据库类似于方言,大部分内容相同,但都有自己的特色内容和语法
sql语法的划分
- DDL:数据库定义语言(data definition language)
关键字: create , alter , drop - DML:数据库操作语言(data manipulation language)
关键字: insert, delete, update - DQL:数据库查询语言(data query language)
关键字: select , from , where - DCL:数据库控制语言(data control language)
SQL公共语法:
语法灵活,可以随意换行,空格或缩进,增强可读性
以分号结尾
SQL语句关键字部分不区分大小写,建议关键字使用大写
标识符部分,windows不区分大小写,但是linux系统中区分大小写
关键字:系统定义的具有特殊功能或者含义的字符组合(例如,查询,select)
标识符:程序员自己定义的,具有特殊功能的或者含义的字符组合(文件名,或者变量名)
可以使用 /**/ 作为多行注释,可以使用 --和# 作为单行注释, 注释的快捷键:crtrl+/
Sql数据类型
划分数据类型,有利于我们更好的存储和查询数据
数据类型中的细分有利于我们更好的利用磁盘空间
常用的数据类型:
字符型:varchar char
整型:int
浮点型: decimal
日期: data datetime
DDL操作语句
- 数据库的创建:
create database 数据库名称; - 数据库的展示:
show database ; - 数据库的删除:
drop database 数据库的名称; - 数据库的使用:
use 数据库的名称; - 查看当前使用的数据库:
select database();
#数据库的创建
create database test_db;
#创建数据库,如果数据库存在不报错
create database if not exists test_db1;
#创建数据库时指定字符集
#utf8字符集包含所有的汉字
#unicode码:万国码 utf-16 utf-32
create database if not exists test_db2 character=utf8;
create database if not exists test_db2 character set utf8;
DDL: TABLE
-
表的创建: create table 表名(字段名 类型 约束,字段名 类型 约束…)
-
表的查询:show tables / desc 表名
-
表的删除:drop table 表名1,表名2…
#创建数据表
Create table 表名(cid varchar(10) primary key , cname varchar(255)
);
#创建表,并且表存在是不报错
Create table if not exists category1(cid varchar(10) primry key , cname varchar(255));
#查看数据表
Show category;
#查看表结构
Desc category;
#表的删除
Dorp table category;
#能否一次删除多张表?可以
Drop table category,category1;
#注意:不能一次删除多个库,数据库只能一个一个的删除
-
添加字段:
alter table 表名 add 字段名 字段类型 约束; -
修改字段:
alter table 表名 change 原字段名 新字段名 字段类型 约束 -
删除字段:
alter table 表名 drop 字段名; -
修改表名:
rename table 旧表名 to 新表名;
#添加一个字段
#使用 ` ` 可以防止关键字进行转译
ALTER TABLE category ADD `desc` VARCHAR(100);
DESC category ;
#如果要添加字段不是关键字,则不需要使用 ` `
ALTER TABLE category ADD `num` int;
#修改字段 unique 唯一约束: 此约束修饰字段不能重复
ALTER TABLE category CHANGE `desc` description VARCHAR(100) UNIQUE;
DESC category;
#删除字段
ALTER TABLE category DROP num;
#不能同时删除两个字段
ALTER TABLE category DROP num num1;
#修改表名
RENAME TABLE category TO category2;
DML数据操作语言
-
插入表记录:
insert into 表名 values (字段1,字段2…) -
插入多条数据:
insert into 表名 values (字段1,字段2…) , (字段1,字段2…) ,
(字段1,字段2…)
如果插入时想指定插入的字段,在表名后面添加括号,写上需要插入的字段名称
-
更新记录:
update表名 set 字段名=值 where条件; -
删除记录:
delete from 表名 where条件;
#Insert 插入记录
#这种方式进行插入,value中的字段数量一定要和表中的字段数量一致,可以插入null
INSERT INTO category2 VALUES(`c001` , `水果` , `很甜`);
#可以在表名后面添加括号,只插入指定的字段,未插入的字段默认只为空(null)
INSERT INTO category2 (cid, cname) VALUES (`c002`, `数码`);
#只能一次性插入一条目录吗? 不
#一次性可以插入多条目录
INSERT INTO category2 VALUES(`c003` , `服装` , `abc`) , (`c004` , `图书` , `null`);
INSERT INTO category2 (cid, cname) VALUES (`c005`, `清洁`) , (`c006`, `生鲜`) , (`c007` , `家具`)
#更新记录
UPDATE category2 SET CNAME=`房产`;
UPDATE category2 SET CNAME=`水果` WHERE cid = `c001` ;
ALTER TABLE category2 ADD num int;
UPDATE category2 SET num = 100;
#注意:更新的数据内容要和原数据的类型及范围一致
UPDATE category2 SET num = `No.1` WHERE cid = ` c005`;
#删除记录 delete
#删除指定的记录
DELETE FROM category2 WHERE cid = `c005`;
#删除全部记录
DELETE FROM category2;
#清空记录 truncate
TURNCATE TABLE category2;
#delete 删除记录,不恢复表的状态, truncate删除记录,并将恢复到初始状态