数据库SQL操作

数据库

概述

1.安装

下载地址 https://dev.mysql.com/downloads/mysql/

免安装版:

  1. 解压后放到安装目录 E:\Program Files\mysql

  2. 打开 此电脑-属性-高级配置-环境变量-Path,添加 E:\Program Files\mysql\bin

  3. 配置文件 my.ini

    [mysqld]
    # 设置3306端口
    port=3306
    # 设置mysql的安装目录
    basedir=E:\Program Files\mysql
    # 设置mysql数据库的数据的存放目录
    datadir=E:\Program Files\mysql\data
    # 允许最大连接数
    max_connections=200
    # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
    max_connect_errors=10
    # 服务端使用的字符集默认为UTF8
    character-set-server=utf8
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    # 默认使用“mysql_native_password”插件认证
    default_authentication_plugin=mysql_native_password
    
    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8
    
    [client]
    # 设置mysql客户端连接服务端时默认使用的端口
    port=3306
    default-character-set=utf8
    
  4. 在mysql的安装目录中,打开bin文件夹,运行cmd.执行初始化数据库的指令:

    E:\Program Files\mysql\bin>mysqld --initialize --console
    ...
    【生成初始密码】:
     A temporary password is generated for root@localhost: q)pu9aFJS+Ad  
    
  5. 安装服务

    在MySQL安装目录的 bin 目录下执行命令:

    E:\Program Files\mysql\bin>mysqld install mysql8 (服务名默认是mysql,可以随意修改)
    Install/Remove of the Service Denied! 
    操作失败,没有权限
    

    关闭cmd,以管理员身份运行cmd,进入MySQL安装目录的 bin 目录下,重新执行

    E:\Program Files\mysql\bin>mysqld install mysql8
    Service successfully installed.
    

    安装完成之后

    通过命令net start mysql8启动MySQL的服务了。

    通过命令net stop mysql8停止服务。

  6. net start mysql8启动MySQL

  7. 修改默认密码,进入数据库:mysq -u root -pq)pu9aFJS+Ad

    alter user ‘root’@‘localhost’ identified with mysql_native_password BY ‘新密码’;

  8. 退出mysql,输入quit

2.服务管理
  1. 使用管理员身份运行cmd,关闭mysql服务

    net stop mysql8
    
  2. 删除mysql服务

    sc delete mysql8 或者 mysqld remove mysql8
    
  3. 刪除mysqlDB目录文件( 安裝mysql时my.ini指定的目录)

SQL语句

SQL : Structure Query Language(结构化查询语言)

SQL 是一种标准化的语言,它允许你在数据库上执行操作,如创建项目,查询内容,更新内容,并删除条目等操作。 Create, Read, Update, and Delete 通常称为CRUD操作。

分类

  • DDL(Data Defifinition Language):数据定义语言,用来定义数据库对象:库、表、列等。
  • DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据)增删改。
  • DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别。
  • DQL(Data Query Language):数据查询语言,用来查询记录(数据)查询。
DDL 数据定义语言
创建数据库
create database 数据库名; -- 创建数据库

查看数据库
show databases; -- 查看当前数据库服务器中的所有数据库
show create database 数据库名; -- 查看已创建的数据库的定义信息
Select database(); -- 查看当前使用的数据库
use 数据库名; -- 切换数据库

修改数据库
alter database 数据库名 character set 编码方式;
	ALTER DATABASE mydb2 character SET utf8;
	
删除数据库
drop database 数据库名;

表操作

创建表
    CREATE TABLE 表名( 
        列名1 数据类型 [约束], 
        列名2 数据类型 [约束], 
        列名n 数据类型 [约束] 
    );
    [约束] 表示可有可无

常用数据类型:
     int:整型
     double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为
    999.99;默认支持四舍五入
     char:固定长度字符串类型; char(10) 'aaa '10varchar:可变长度字符串类型; varchar(10) 'aaa'3text:字符串类型,比如小说信息;
     blob:字节类型,保存文件信息(视频,音频,图片)date:日期类型,格式为:yyyy-MM-dd;
     time:时间类型,格式为:hh:mm:ss
     timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值
     datetime:日期时间类型 yyyy-MM-dd hh:mm:ss
     
show tables; -- 当前数据库中的所有表
show create table 表名; -- 查看表格的创建细节
desc 表名 -- 查看表的字段信息
alter table 旧表名 rename 新表名; -- 修改表名
alter table 表名 character set 编码方式; -- 修改表的字符集为gbk
	ALTER TABLE user CHARACTER SET gbk;
drop table 表名; -- 删除表

列操作
alter table 表名 add 新列名 新的数据类型 -- 增加列
	ALTER TABLE employee ADD image blob; -- 在上面员工表的基本上增加一个image列
alter table 表名 change 旧列名 新列名 新的数据类型 -- 修改列
	ALTER TABLE employee MODIFY job varchar(60); -- 修改job列,使其长度为60
	ALTER TABLE employee change job job varchar(60);-- 修改job列,使其长度为60
	ALTER TABLE user CHANGE name username varchar(100); -- 修改name列, 列名name修改为username
alter table 表名 drop 列名 -- 删除列	
练习
    表名 card(会员卡表)
    列名 数据类型 
    cardid int 
    cardnum varchar(20)
    regDate date 
 需求:
     (1)创建该表
     (2)将card表名修改为CardInfo
     (3)添加delDate(注销时间) 列到表中
     (4)将cardnum改为varchar(30)
     (5)删除regDate列
     (6)删除cardInfo表

 create table card (cardid int,cardnum varchar(20),regdate date);
 alter table card rename CardInfo;
 alter table CardInfo add delDate date;
 alter table CardInfo modify cardnum varchar(30);
 alter table CardInfo drop regDate;
 drop table CardInfo;
DML 数据操作语言

DML是对表中的数据进行增、删、改的操作。主要包括:INSERT 、UPDATE、 DELETE

  • mysql中,字符串类型和日期类型都要用单引号括起来。
  • 空值:null
1. 插入操作: insert

insert into 表名(列名) values(数据值);
	insert into student(stuname,stuage,stusex,birthday) values('张三1',18,'a','2000-1-1');
	-- 当给所有列添加数据的时候, 列名可以省略,如下:
	insert into student values('李四',12,'1111',189.98,'2000-1-1','男','2007-1-1'); 

-- 同时添加多行	
insert into 表名(列名) values(第一行数据),(第二行数据),(),();
	insert into student(stuname,stuage,stusex,birthday) 
        values('张三3',18,'a','2000-1-1'),
        ('张三4',18,'a','2000-1-1'),
        ('张三5',18,'a','2000-1-1');

练习:
create table emp( 
    id int primary key, 
    name varchar(100) not null, 
    gender varchar(10) not null, -- 性别
    birthday date, 
    salary float(10,2), -- 薪水
    entry_date date, -- 入职日期
    resume text ); -- 简历

INSERT INTO emp(id,name,gender,birthday,salary,entry_date,resume) VALUES(1,'zhangsan','female','1990-5-10',10000,'2015-5-5-','goodgirl'); 
INSERT INTO emp(id,name,gender,birthday,salary,entry_date,resume) VALUES(2,'lisi','male','1995-5-10',10000,'2015-5-5','good boy'); 
INSERT INTO emp(id,name,gender,birthday,salary,entry_date,resume) VALUES(3,'你好','male','1995-5-10',10000,'2015-5-5','good boy');
2. 修改操作:update

UPDATE 表名 SET 列名1=列值1,列名2=列值2 ... WHERE 列名=值

练习:
    将所有员工薪水修改为5000元。 
    将姓名为’zs’的员工薪水修改为3000元。 
    将姓名为’aaa’的员工薪水修改为4000,resume改为ccc。 
    将wu的薪水在原有基础上增加1000元。

	update emp set salary=5000;
	update emp set salary=3000 where name='zs';
	update emp set salary=4000,resume='ccc' where name='aaa';
	update emp set salary=salary+1000 where name='wu';

-- sql中的运算符:1)算术运算符 【+-*/(除法),求余(%)】
 示例:
     5/2
     5%2
     2/5
     2%52)赋值运算符 【=】
	注:赋值方向:从右往左赋值
	示例: name='张三'
 (3) 逻辑运算符:【and(并且),or(或者),not(取非)】
	 作用:用于连接多个条件时使用
 (4) 关系运算符:
	 >,<,>=,<=,=(等于),<>(不等于),!=(不等于)

3. 删除操作:DELETE:

DELETE from 表名 【WHERE 列名=值】

-- 删除表中所有数据
delete from 表名;
truncate table 表名;

-- 为空的条件:列名 is null or 列名=''(两个单引号表示空字符串)

-- DELETE 删除表中的数据,表结构还在; 删除后的数据可以找回 rollback
-- TRUNCATE 删除是把表直接DROP掉,然后再创建一个同样的新表。
	-- 删除的数据不能找回。执行速度比DELETE快。

DCL 数据控制语言
1. 创建用户

    create user 用户名@指定ip identified by 密码;
        create user test123@localhost IDENTIFIED by 'test123';
	
	-- 指定IP才能登陆
    create user 用户名@客户端ip identified by 密码;	
    	create user test456@10.4.10.18 IDENTIFIED by 'test123';
	
	-- 任意IP均可登陆
    create user 用户名@'%' identified by 密码;
    	create user test7@'%' IDENTIFIED by 'test7';
    	
2. 用户授权:
	-- 给指定用户授予指定数据库指定权限
	grant 权限1,权限2,........,权限n on 数据库名.* to 用户名@IP;    
    	grant select,insert,update,delete,create on chaoshi.* to 'test456'@'127.0.0.1';
    	
	-- 给指定用户授予所有数据库所有权限    	
	grant all on *.* to 用户名@IP
		grant all on *.* to 'test456'@'127.0.0.1';
		
3. 用户权限查询:
	show grants for 用户名@IP;		
		show grants for 'root'@'%';
		
4. 撤销用户权限:
	revoke 权限1,权限2,........,权限n on 数据库名.* from 用户名@IP;		
		REVOKE SELECT ON *.* FROM 'root'@'%' ;

5. 删除用户:
	drop user 用户名@IP;
		drop user test123@localhost;
	
DQL 数据查询语言
数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。
查询返回的结果集是一张虚拟表。

语法: SELECT 列名 FROM 表名 【WHERE --> BROUP BY-->HAVING--> ORDER BY】

* 表示所有列

SELECT 要查询的列名称 
FROM 表名称 
WHERE 限定条件 /*行条件*/ 
GROUP BY grouping_columns /*对结果分组*/ 
HAVING condition /*分组后的行条件*/ 
ORDER BY sorting_columns /*对结果分组*/ 
LIMIT offset_start, row_count /*结果限定*/

测试数据

-- 创建表stu 
CREATE TABLE stu ( sid CHAR(6), sname VARCHAR(50), age INT, gender VARCHAR(50) );
INSERT INTO stu VALUES('S_1001', 'liuYi', 35, 'male'); 
INSERT INTO stu VALUES('S_1002', 'chenEr', 15, 'female'); 
INSERT INTO stu VALUES('S_1003', 'zhangSan', 95, 'male'); 
INSERT INTO stu VALUES('S_1004', 'liSi', 65, 'female'); 
INSERT INTO stu VALUES('S_1005', 'wangWu', 55, 'male'); 
INSERT INTO stu VALUES('S_1006', 'zhaoLiu', 75, 'female'); 
INSERT INTO stu VALUES('S_1007', 'sunQi', 25, 'male'); 
INSERT INTO stu VALUES('S_1008', 'zhouBa', 45, 'female'); 
INSERT INTO stu VALUES('S_1009', 'wuJiu', 85, 'male'); 
INSERT INTO stu VALUES('S_1010', 'zhengShi', 5, 'female'); 
INSERT INTO stu VALUES('S_1011', 'xxx', NULL, NULL);

-- 创建雇员表 
CREATE TABLE emp2( 
    empno INT, -- 工号
    ename VARCHAR(50), -- 名字 
    job VARCHAR(50), -- 职位
    mgr INT, -- 上级工号
    hiredate DATE, -- 入职时间
    sal DECIMAL(7,2), -- 薪水
    comm decimal(7,2), -- 佣金
    deptno 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值