MySQL数据库的使用

一.关键字

数据库 : database 数据表 : table 创建 : create

修改 : alter 添加 : add   修改 : modify(类型/约束)/change(列名/类型/约束)

删除 : drop 增加 : insert into 更新 : update…set 删除 : delete from

约束 : constraint  唯一 : unique 非空 : not null 主键 : primary key

自增 : auto_increment 查询 : select…from 独特 : distinct(去重)

排序 : order by(字段名,按什么排序)(asc升,desc降) /分组 : group by(分组字段名,按什么分组)

外键 : foreign key references(参考)

二.SQL

1.Sql语句分类

数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:createalterdrop

数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:insertdeleteupdate

数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:selectfromwhere

2.SQL通用语法

  1. SQL语句可以单行或多行书写,以分号结尾
  2. 可使用空格和缩进来增强语句的可读性
  3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写

        例如:SELECT * FROM user。

      4.MySQL中的我们常使用的数据类型如下

三.DDL之数据库操作

创建数据库

格式:

    * create database 数据库名;

    * create database 数据库名 character set 字符集;

例如:

#创建数据库 数据库中数据的编码采用的是安装数据库时指定的默认编码 utf8

CREATE DATABASE webdb_1;

#创建数据库 并指定数据库中数据的编码

CREATE DATABASE webdb_2 CHARACTER SET utf8;

查看数据库

查看数据库MySQL服务器中的所有的数据库:

show databases;

查看某个数据库的定义的信息:

show create database 数据库名;

例如:

show create database webdb_1;

查看正在使用的数据库:select database();

SELECT DATABASE();

删除数据库

drop database 数据库名称;

例如:

drop database webdb_2;

使用数据库

查看正在使用的数据库:

     select database();

其他的数据库操作命令

      切换数据库:

                use 数据库名;

   例如:use webdb_1;

DDL之表操作:table

创建表

创建数据库中的表,使用关键字 create(创建) table(表)

  []:数据库中是可选的意思,可以有,可以没有

  格式:

create table 表名(

  字段名 数据类型[长度] [约束],  

  字段名 数据类型[长度] [约束],

  ...

  字段名 数据类型[长度] [约束](最后一个不能有逗号)

);

主键约束:primary key

--字段不能为null,不能重复

举例:创建商品分类表category :

CREATE TABLE category(

  -- 商品id

  cid INT PRIMARY KEY,

 -- 商品名称

  cname VARCHAR(100)

);

查看表

-- 查看当前数据库中所有的表

SHOW TABLES;

-- 查看表结构 DESC 表名

DESC category;

删除表

格式:drop table 表名;

例如:drop table category;

修改表结构格式

增加: alter table 表名 add 列名 类型(长度) [约束];

作用:修改表添加列. 

例如:

#1,为分类表添加一个新的字段为 分类描述 varchar(20)

ALTER TABLE category ADD `desc` VARCHAR(20);

小修改: alter table 表名 modify 列名 类型(长度) 约束; 

作用:修改表修改列的类型长度及约束.

注意: 如果有数据,必须注意数据类型varchar-->int 容易有错误数据

例如:

#2, 为分类表的描述字段进行修改,类型varchar(50) 添加约束 not null

ALTER TABLE category MODIFY `desc` VARCHAR(50) NOT NULL;

大修改: alter table 表名 change 旧列名 新列名 类型(长度) 约束; 

作用:修改表修改列名.

例如:

#3, 为分类表的分类名称字段进行更换 更换为 description varchar(30)

ALTER TABLE category CHANGE `desc`description VARCHAR(30);

删除列: alter table 表名 drop 列名;

作用:修改表删除列.

注意: 如果列中有数据,数据就会一起删除了,需谨慎

例如:

#4, 删除分类表中description这列

ALTER TABLE category DROP description;

改表名: rename table 表名 to 新表名; 

作用:修改表名

例如:

#5, 为分类表category 改名成 category2

RENAME TABLE category TO category2;

改编码: alter table 表名 character set 字符集(了解);

作用:修改表的字符集

注意:不建议执行,有可能会产生乱码

例如:

#6, 为分类表 category 的编码表进行修改,修改成 gbk

ALTER TABLE category CHARACTER SET gbk;

(DML)数据操作语言

插入表记录:insert

INSERT INTO  (insert into)

往数据库表中插入数据

  使用关键字 insert [into]

格式:

包含主键:insert into 表名(字段1,字段2,...) values(值1,值2,...);

主键自增,省略主键:insert into 表名(不包含主键) values(不包含主键);

注意事项:

1.字段和值一定要一一对应(个数,数据类型)

2.除了数值类型(int,double),其它的数据类型都需要使用引号包裹起来

可以使用' ',也可以使用"",建议使用' '

-- 包含主键:insert into 表名(字段1,字段2,...) values(值1,值2,...);

INSERT INTO category (cid,cname) VALUES(1,"服装");

INSERT INTO category (cid,cname) VALUES(2,"彩电");

-- 创建category表 主键自增AUTO_INCREMENT(主键自己添加,自己增长)

CREATE TABLE category(

 -- 商品id

   cid INT PRIMARY KEY AUTO_INCREMENT,

   -- 商品名称

   cname VARCHAR(100)

);

-- 主键自增,省略主键:insert into 表名(不包含主键) values(不包含主键);

INSERT INTO category (cname) VALUES("彩电");

批量插入数据

格式:

包含主键:insert into 表名(字段1,字段2,...) values(值1,值2,...),(值1,值2,...),(值1,值2,...)...

主键自增,省略主键:insert into 表名(不包含主键) values(不包含主键),(值1,值2,...),(值1,值2,...)...;

INSERT INTO category (cid,cname) VALUES(3,'空调'),(4,'洗衣机');

INSERT INTO category (cname) VALUES('微波炉'),('电磁炉');

省略字段名格式:必须给出全部字段的值(包含主键)

  格式:

insert into 表名 values(全部字段的值);

insert into 表名 values(全部字段的值),(全部字段的值),(全部字段的值)..;

INSERT INTO category VALUES(7,'冰箱');

INSERT INTO category VALUES(8,'笔记本电脑'),(9,'台式机');

-- 记不住主键,可以使用null,sql会自动计算主键

INSERT INTO category VALUES(NULL,'小米6');

更新表记录:update

 更新表数据,使用关键字 update(更新,修改) set(设置)

  格式:

语法:

--更新所有记录的指定字段, 不带条件过滤,一次修改列中所有的数据

update 表名 set 字段名=,字段名=,...;

--更新符合条件记录的指定字段

update 表名 set 字段名=,字段名=,... where 条件过滤;

  1. 注意:
    1. 列名的类型与修改的值要一致.
    2. 修改值得时候不能超过最大长度.
    3. 除了数值类型外,其它的字段类型的值必须使用引号引起

-- 不带条件过滤(慎用)

UPDATE category SET cname='全部修改';

-- 带条件过滤,使用关键字where !!  (-- 只修改cid为4的cname 关键字不是-while-这么坑)

UPDATE category SET cname='黑白电视机' WHERE cid=4;

删除记录(数据表):delete

 删除表数据 使用关键字 delete(删除) from(来自)

  格式:

delete from 表名 [where 条件过滤];

delete from 表名 删除表中的所有数据,但是不会删除主键自增

truncate table 表名;删除表中的所有数据,会删除主键自增,让主键自增重置从1开始

-- delete from 表名 [where 条件过滤];

DELETE FROM category WHERE cid=4;

-- delete from 表名

DELETE FROM category;

-- 插入数据,会出现断号,没有之前的序号

INSERT INTO category (cname) VALUES('手机');

DELETE FROM category WHERE cid=12;

INSERT INTO category (cid,cname) VALUES(12,'手动插入指定的主键列');

-- truncate table 表名;

TRUNCATE TABLE category;

约束

主键约束

主键约束 使用关键字 primary key

  作用:

约束主键列不能为null

不能重复

每个表都必须有一个主键,且只能有一个主键

主键不能使用业务数据

-- 添加主键的第一种方式,在列名之后直接添加

CREATE TABLE persons(

  Id_P INT PRIMARY KEY,

  LastName VARCHAR(255),

FirstName VARCHAR(255),

  Address VARCHAR(255),

  City VARCHAR(255)

);

INSERT INTO persons(Id_P,LastName) VALUES(1,'张');

INSERT INTO persons(Id_P,LastName) VALUES(NULL,'张');-- 非空

INSERT INTO persons(Id_P,LastName) VALUES(1,'张');-- 重复

-- 添加主键的第二种方式,使用constraint区域

-- 格式:[constraint 名称] primary key (字段列表)

CREATE TABLE persons(

  Id_P INT,

  LastName VARCHAR(255),

  FirstName VARCHAR(255),

  Address VARCHAR(255),

  City VARCHAR(255),

  CONSTRAINT pk_id_p PRIMARY KEY(Id_P)

);

-- constraint 如果不给出主键的名字,可以省略关键字constraint

CREATE TABLE persons(

  Id_P INT,

  LastName VARCHAR(255),

  FirstName VARCHAR(255),

  Address VARCHAR(255),

  City VARCHAR(255),

  PRIMARY KEY(Id_P)

);

添加主键的第三种方式,创建表之后,通过修改表结构,添加主键

  alter table 表名 add [constraint 名称] primary key (字段列表);

CREATE TABLE persons(

  Id_P INT,

  LastName VARCHAR(255),

  FirstName VARCHAR(255),

  Address VARCHAR(255),

  City VARCHAR(255)

);

ALTER TABLE persons ADD PRIMARY KEY(Id_P);

-- 删除主键

ALTER TABLE persons(表名) DROP PRIMARY KEY;

-- 联合主键:使用2个以上的字段为主键

CREATE TABLE persons(

  Id_P INT,

  LastName VARCHAR(255),

  FirstName VARCHAR(255),

  Address VARCHAR(255),

  City VARCHAR(255),

  PRIMARY KEY(LastName,FirstName)

);

自动增长列

AUTO_INCREMENT  (auto_increment)

我们可以在表中使用 auto_increment(自动增长列)关键字,自动增长列类型必须是整形,自动增长列必须为键(一般是主键)。

P_Id int PRIMARY KEY AUTO_INCREMENT,

非空约束

NOT NULL (not null)

/*

  非空约束 使用关键字 not null

  作用:强制约束某一列不能为null(不接受null值)

*/

-- 创建非空约束的第一种格式,创建表时,在字段后直接给出

CREATE TABLE persons(

  Id_P INT PRIMARY KEY AUTO_INCREMENT,

  LastName VARCHAR(255),

  FirstName VARCHAR(255),

  Address VARCHAR(255),

  City VARCHAR(255) NOT NULL

);

-- 添加数据

INSERT INTO persons(lastname,city) VALUES('张','雄县');

INSERT INTO persons(lastname,city) VALUES('李','null');

INSERT INTO persons(lastname,city) VALUES('王','');

INSERT INTO persons(lastname,city) VALUES('赵',NULL); -- Column 'City' cannot be null

-- String s = "雄县";

 s="" ;  s="null";  s=null;  void  java四大皆空

-- 创建非空约束方式二 修改表结构

-- alter table 表名 modify 列名 类型[长度] [约束];

CREATE TABLE persons(

  Id_P INT PRIMARY KEY AUTO_INCREMENT,

  LastName VARCHAR(255),

  FirstName VARCHAR(255),

  Address VARCHAR(255),

  City VARCHAR(255)

);

(修改modify 时写约束)

ALTER TABLE persons MODIFY city VARCHAR(255)NOT NULL;

-- 删除非空约束(修改modify 时不写约束)

ALTER TABLE persons MODIFY city VARCHAR(255);

唯一约束(UNIQUE  (unique))

 唯一约束 使用关键字UNIQUE

  作用:  添加了唯一约束的字段,不能重复

-- 创建唯一约束的第一种格式,创建表时,在字段后直接给出

CREATE TABLE persons(

  Id_P INT PRIMARY KEY AUTO_INCREMENT,

  LastName VARCHAR(255),

  FirstName VARCHAR(255),

  Address VARCHAR(255),

  City VARCHAR(255) UNIQUE

);

INSERT INTO persons (lastname,city) VALUES('张','毛里求斯');

-- Duplicate entry '毛里求斯' for key 'City'

INSERT INTO persons (lastname,city) VALUES('王','毛里求斯');

-- 创建唯一约束的第二种格式,创建表时使用 [constraint 名称] unique(字段列表)

CREATE TABLE persons(

  Id_P INT PRIMARY KEY AUTO_INCREMENT,

  LastName VARCHAR(255),

  FirstName VARCHAR(255),

  Address VARCHAR(255),

  City VARCHAR(255),

  CONSTRAINT UNIQUE(City)

);

-- 创建唯一约束的第三种格式,创建表之后,修改表数据

-- alter table 表名 modify 列名 类型[长度] [约束];

CREATE TABLE persons(

  Id_P INT PRIMARY KEY AUTO_INCREMENT,

  LastName VARCHAR(255),

  FirstName VARCHAR(255),

  Address VARCHAR(255),

  City VARCHAR(255)

);

(修改modify 时写约束)

ALTER TABLE persons MODIFY city VARCHAR(255) UNIQUE;

-- alter table 表名 add [constraint 名称] unique (字段列表);

CREATE TABLE persons(

  Id_P INT PRIMARY KEY AUTO_INCREMENT,

  LastName VARCHAR(255),

  FirstName VARCHAR(255),

  Address VARCHAR(255),

  City VARCHAR(255)

);

ALTER TABLE persons ADD UNIQUE(City);

/*

 删除唯一约束 ALTER TABLE Persons DROP INDEX 名称

 定义约束的时候,如果没有创建名称,则名称为字符串

*/

ALTER TABLE persons DROP INDEX city;

默认约束(DEFAULT  (default))

 默认约束:给字段添加一个默认值,如果字段没有插入值,则使用默认值

  使用关键字 default 值

-- 创建默认约束方式一,创建表,列数据类型后面 default '默认值'

CREATE TABLE persons(

  Id_P INT PRIMARY KEY AUTO_INCREMENT,

  LastName VARCHAR(255),

  FirstName VARCHAR(255),

  Address VARCHAR(255),

  City VARCHAR(255)DEFAULT '中国'  //指定默认数值,修改时才会改变,否则一直是

);

INSERT INTO persons (lastname) VALUES('张');

INSERT INTO persons (lastname,city) VALUES('张','加拿大');

-- 创建默认约束方式二 修改表结构

CREATE TABLE Persons(

Id_P INT PRIMARY KEY AUTO_INCREMENT,

LastName VARCHAR(255),

FirstName VARCHAR(255),

Address VARCHAR(255),

City VARCHAR(255)

)

-- alter table 表名 modify 列名 类型[长度] [约束];  

ALTER TABLE Persons MODIFY City VARCHAR(255) DEFAULT '我的家乡';

-- 删除默认约束 (修改modify 时不写约束)

ALTER TABLE Persons MODIFY City VARCHAR(255);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值