mysql简单入门

本文详细解读了SQL的四个主要类别:DDL(创建、查看、修改、删除数据库与表)、DML(数据更新)、DQL(查询数据)和DCL(数据控制)。涵盖了创建数据库、表结构、数据操作、查询方法以及权限管理等内容,是数据库管理与SQL初学者的实用指南。
摘要由CSDN通过智能技术生成

SQL的分类

分类说明
数据定义语言简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列 等。
数据操作语言简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。
数据查询语言简称DQL(Data Query Language),用来查询数据库中表的记录。
数据控制语言简称DCL(Date Control Language),用来定义数据库的访问权限和安全级别, 及创建用户。

1 DDL操作 数据库

1.1 创建数据库

命令说明
create database 数据库名;创建指定名称的数据库。
create database 数据库名 character set 字符集;创建指定名称的数据库,并且指定字符集(一般都 指定utf-8)
/*
方式1 直接指定数据库名进行创建 默认数据库字符集为:latin1
*/

CREATE DATABASE db1;

/*
方式2 指定数据库名称,指定数据库的字符集 一般都指定为 utf8,与Java中的编码保持一致
*/
CREATE DATABASE db1_1 CHARACTER SET utf8;

1.2 查看/选择数据库

命令说明
use 数据库切换数据库
select database();查看当前正在使用的数据库
show databases;查看Mysql中 都有哪些数据库
show create database 数据库名;查看一个数据库的定义信息
-- 切换数据库    从db1 切换到    
db1_1 USE db1_1;

-- 查看当前正在使用的数据库
SELECT DATABASE();

-- 查看Mysql中有哪些数据库
SHOW DATABASES;

-- 查看一个数据库的定义信息
SHOW CREATE DATABASE db1_1;

1.3修改数据库

命令说明
alter database 数据库名 character set 字符集;数据库的字符集修改操作
-- 将数据库db1 的字符集    修改为    
utf8 ALTER DATABASE db1 CHARACTER SET utf8;
-- 查看当前数据库的基本信息
SHOW CREATE DATABASE db1;

1.4删除数据库

命令说明
drop database 数据库名从MySql中永久的删除某个数据库
-- 删除某个数据库 
DROP DATABASE db1_1;

2 DDL 操作 数据表

2.1创建表

-- 语法格式:
CREATE TABLE 表名(
	字段名称1 字段类型(长度),
	字段名称2 字段类型         
    注意    最后一列不要加逗号 
);

sql实现

-- 切换到数据库    
db1 USE db1;
-- 创建表
CREATE TABLE category( 
    cid INT,
	cname VARCHAR(20) 
);

快速创建一个表结构相同的表(复制表结构)

-- 语法
create table 新表明    like 旧表名

sql实现

-- 创建一个与db1一样结构的db2
CREATE TABLE db2 LIKE db1;

-- 查看表结构 
DESC test2;

2.2 查看表

命令说明
show tables;查看当前数据库中的所有表名
desc 表名;查看数据表的结构
-- 查看当前数据库中的所有表名 
SHOW TABLES;
-- 显示当前数据表的结构
DESC category;
-- 查看创建表的SQL语句
SHOW CREATE TABLE category;

2.3 删除表

命令说明
drop table 表名;删除表(从数据库中永久删除某一张表)
drop table if exists 表名;判断表是否存在, 存在的话就删除,不存在就不执行删除
-- 直接删除    test1 表
DROP TABLE test1;
-- 先判断    再删除test2表
DROP TABLE IF EXISTS test2;

2.4修改表

  • 修改表名

    • -- 语法
      rename table 旧表名 to 新表名
      
      -- 将category表  改为 category1
      RENAME TABLE category TO category1;
      
  • 修改表的字符集(character set)

    • alter table 表名 character set 字符集
      将category表的字符集  修改为utf8
      alter table category character set utf8
      
  • 向表中添加列(add)

    -- 语法格式
    alert table 表名    add 字段名称  字段类型
    -- 为分类表添加一个新的字段为    分类描述    cdesc varchar(20)
    ALTER TABLE category ADD cdesc VARCHAR(20);
    
  • 修改表中列的 数据类型或长度(modify)

    • -- 语法格式
      alter table 表名    modify 字段名称    字段类型
      
      -- 对分类表的描述字段进行修改,类型varchar(50)
      ALTER TABLE category MODIFY cdesc VARCHAR(50);
      
  • 修改列名称(change)

    • -- 语法格式
      alter table 表名    change 旧列名    新列名    类型(长度);
      -- 对分类表中的 desc字段进行更换, 更换为 description varchar(30)
      ALTER TABLE category CHANGE cdesc description VARCHAR(30);
      
  • 删除列 (drop)

    • -- 语法格式
      alter table 表名    drop 列名;
      
      -- 删除分类表中description这列
      ALTER TABLE category DROP description;
      

3 DDL 操作 数据表

3.1 插入数据

-- 语法格式
insert into 表名    (字段名1,字段名2...values(字段值1,字段值2...);

需要用的数据

表名:student
表中字段:
	学员ID, 	sid int
	姓名,    sname varchar(20) 年龄,    age int
	性别,    sex char(1)
	地址,    address varchar(40)
# 创建学生表
CREATE TABLE student( 
    sid INT,
	sname VARCHAR(20),
    age INT,
	sex CHAR(1), 
    address VARCHAR(40)
);
  • 插入方式一

    • -- 插入全部字段,  将所有字段名都写出来
      INSERT INTO student (sid,sname,age,sex,address) VALUES(1,'孙悟空',20,'男','花果 山');
      
  • 插入方式二

    • -- 插入全部字段,不写字段名
      INSERT INTO student VALUES(2,'孙悟饭',10,'男','地球');
      
  • 插入方式三

    • -- 插入指定字段的值
      INSERT INTO category (cname) VALUES('白骨精');
      

3.2 更改数据

-- 不带条件的修改
update 表名    set 列名 =-- 带条件的修改 
update 表名    set 列名  =[where 条件表达式:字段名    =]

-- 不带条件修改,将所有的性别改为女
UPDATE student SET sex = '女';

-- 带条件的修改,将sid 为3的学生,性别改为男
UPDATE student SET sex = '男' WHERE sid = 3;

-- 一次修改多个列,  将sid为 2 的学员,年龄改为 20,地址改为  北京
UPDATE student SET age = 20,address = '北京' WHERE sid = 2;

3.3删除数据

-- 删除所有数据
delete from 表名

-- 指定条件  删除数据
delete from 表名  [where 字段名 =]

-- 删除 sid 为 2 的数据
delete from student where sid = 2

-- 删除所有数据
DELETE FROM student;

如果要删除表中的所有数据,有两种做法

  • delete from 表名; 不推荐. 有多少条记录 就执行多少次删除操作. 效率低
  • truncate table 表名: 推荐. 先删除整张表, 然后再重新创建一张一模一样的表. 效率高

3 DQL 查询表中数据

3.1 需要的数据

#创建员工表
表名    emp
表中字段:
	eid 员工id,int
	ename 姓名,varchar
	sex 性别,char
	salary 薪资,double
	hire_date 入职时间,
	date dept_name 
	部门名称,varchar
#创建员工表 CREATE TABLE emp(
eid INT,
	ename VARCHAR(20), sex CHAR(1),
	salary DOUBLE,
	hire_date DATE,
	dept_name VARCHAR(20) 
);


#添加数据
INSERT INTO emp VALUES(1,'孙悟空','男',7200,'2013-02-04','教学部');
INSERT INTO emp VALUES(2,'猪八戒','男',3600,'2010-12-02','教学部');
INSERT INTO emp VALUES(3,'唐僧','男',9000,'2008-08-08','教学部');
INSERT INTO emp VALUES(4,'白骨精','女',5000,'2015-10-07','市场部');
INSERT INTO emp VALUES(5,'蜘蛛精','女',5000,'2011-03-14','市场部');
INSERT INTO emp VALUES(6,'玉兔精','女',200,'2000-03-14','市场部');
INSERT INTO emp VALUES(7,'林黛玉','女',10000,'2019-10-07','财务部');
INSERT INTO emp VALUES(8,'黄蓉','女',3500,'2011-09-14','财务部');
INSERT INTO emp VALUES(9,'吴承恩','男',20000,'2000-03-14',NULL);
INSERT INTO emp VALUES(10,'孙悟饭','男', 10,'2020-03-14',财务部);
INSERT INTO emp VALUES(11,'兔八哥','女', 300,'2010-03-14',财务部);

3.2 简单查询

-- select 列名    from 表名

-- 查询emp中的  所有数据
select * from emp; -- 使用    * 表示所有列

-- 查询emp表中的所有记录,仅显示id和name字段
SELECT eid,ename FROM emp;

-- 将所有的员工信息查询出来,并将列名改为中文
# 使用    AS关键字,为列起别名
SELECT
eid AS '编号', ename AS '姓名' , sex AS '性别', salary AS '薪资',
hire_date '入职时间', -- AS 可以省略 
dept_name '部门名称'
FROM emp;

-- 查询一共有几个部门

SELECT DISTINCT dept_name FROM emp; -- 使用distinct 关键字,去掉重复部门信息 

-- 将所有员工的工资 +1000 元进行显示
select ename, salary + 1000 from emp;

3.3 条件查询

-- 语法格式
select 列名  from 表名  where 条件表达式  -- 先取出表中的每条数据,满足条件的数据就返回,不满足的就过滤掉

-- 查询员工姓名为黄蓉的员工信息
SELECT * FROM emp WHERE ename = '黄蓉';

-- 查询薪水价格为5000的员工信息
SELECT * FROM emp WHERE salary = 5000;

-- 查询薪水价格不是5000的所有员工信息
SELECT * FROM emp WHERE salary != 5000;
SELECT * FROM emp WHERE salary <> 5000;

-- 查询薪水价格是3600或7200或者20000的所有员工信息
SELECT * FROM emp WHERE salary = 3600 OR salary = 7200 OR salary = 20000;
SELECT * FROM emp WHERE salary IN(3600,7200,20000);

通配符查询

通配符说明
%表示匹配任意多个字符串,
_表示匹配 一个字符
# 查询含有'精'字的所有员工信息
SELECT * FROM emp WHERE ename LIKE '%精%';

# 查询以'孙'开头的所有员工信息
SELECT * FROM emp WHERE ename LIKE '孙%';

# 查询第二个字为'兔'的所有员工信息
SELECT * FROM emp WHERE ename LIKE '_兔%';

# 查询没有部门的员工信息
SELECT * FROM emp WHERE dept_name IS NULL;

# 查询有部门的员工信息
SELECT * FROM emp WHERE dept_name IS NOT NULL;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值