MySQL数据库基础1

MySQL

数据库介绍

  1. 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来。
  2. 数据库管理系统:指一种操作和管理维护数据库的大型软件。用于对数据库服务器进行统一管理和控制,以保证数据库的安全性和完整性。
  3. 数据库登录:
    1. mysql -u用户名 -p密码(本地)
    2. mysql -h主机名 -u用户名 -p密码(远程)
  4. 开启&关闭服务:
    1. 开启:net start mysql
    2. 关闭:net stop mysql

SQL语句

SQL简述

SQL语句介绍

结构化查询语句简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理[关系数据库系统]

SQL分类
  • 数据定义语言:简称DDL,用来定义数据库对象:数据库,表,列

    特点:针对结构上的改变。

  • 数据操作语言:简称DML,用于对数据库中表的记录进行更新

    特点:结构不发生改变,数据变化

  • 数据查询语言:简称DQL,用来查询数据表中的数据

    特点:结构不变,只查询数据

  • 数据控制语言:简称DCL,用来定义数据库的访问权限和安全级别,及创建用户,分配权限。

SQL通用语法
  • 数据类型

    int 整型

    double 浮点型

    varchar 字符串型

    date 日期类型只有年月没有时分秒

DDL操作数据库结构

  1. 创建数据库:

    create database 数据库名;

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

  2. 切换数据库:use 数据库名;

  3. 查看当前数据库名称:select database();

  4. 查看MySQL服务器中有哪些数据库:show databases;

  5. 查看某个数据库的定义信息:show create database 数据库名;

  6. 删除数据库:drop database 数据库名称;

DDL操作数据表结构

创建数据表

create table 表名(

​ 字段名 类型(长度) [约束],

​ 字段名 类型(长度)

)

查看数据表
  1. show tables;查看当前数据库中的所有表名。
  2. desc 表名;查看表的结构。
删除表
  • drop table 表名;从当前库中删除某张表。

DML更新表记录

插入表记录
  • 格式:insert into 表明(字段名称) values (值)

    代码示例:

    INSERT INTO USER(uid,uname,pwd,address) VALUES(1,'八戒','666','高老庄');
     #表名后面的字段名可以省略,代表给所有的字段插入值
    INSERT INTO USER VALUES(2,'悟空','77','花果山');#成功
    INSERT INTO USER VALUES(3,'唐僧','77');#失败
    #给指定的部分字段插入值
    INSERT INTO USER(uid,uname,pwd) VALUES(3,'唐僧','77');
    INSERT INTO USER(uid,uname) VALUES('白骨精',3); # 不行
    
    #一次性插入多条数据
    INSERT INTO USER VALUES(2,'悟空','77','花果山'),
    (2,'悟空','77','花果山'),
    (2,'悟空','77','花果山');
    
更改表记录
  • update 表名 set 字段1=值,字段2=值; 修改全部
  • update 表名 set 字段1=值,字段2=值 where 条件;
删除表记录:delete from
  • 格式:

    #删除全部
    delete from user;
    #条件删除
    delete from user where 条件;
    
  • delete 和 drop 的区别?

    delete 只是删除数据,drop将数据表、库结构删除掉了

  • delete 和 truncate的区别:

    delete只是删除表中的数据,没有破坏表结构;truncate 将表全部删除(包括结构) ,然后创建一张结构一样的表

DQL查询数据

代码示例:

#准备工作,创建数据库数据表插入数据。
CREATE DATABASE test1;
USE test1;
#部门表
CREATE TABLE DEPT(
  DEPTNO INT PRIMARY KEY,#部门编号
  DNAME VARCHAR(14),#部门名称
  LOC VARCHAR(13)#部门地址
);
INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEWYORK');
INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES	(30,'SALES','CHICAGO');
INSERT INTO DEPT VALUES	(40,'OPERATIONS','BOSTON');
#员工表
CREATE TABLE EMP(
	EMPNO INT  PRIMARY KEY,	#员工编号
	ENAME VARCHAR(10),	#员工姓名
	JOB VARCHAR(9),		#员工工作
	MGR INT, 		#员工直属领导编号
	HIREDATE DATE, 		#入职时间
	SAL DOUBLE,		#工资
	COMM DOUBLE,		#奖金
	DEPTNO INT		#对应dept表的外键
);
# 添加 部门 和 员工 之间的主外键关系
ALTER TABLE EMP ADD CONSTRAINT FOREIGN KEY EMP(DEPTNO) REFERENCES DEPT (DEPTNO);
#插入数据
INSERT INTO EMP VALUES(7369,'SMITH','CLERK',7902,"1980-12-17",800,NULL,20);
INSERT INTO EMP VALUES(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO EMP VALUES(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
INSERT INTO EMP VALUES(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
INSERT INTO EMP VALUES(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
INSERT INTO EMP VALUES(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
INSERT INTO EMP VALUES(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
INSERT INTO EMP VALUES(7788,'SCOTT','ANALYST',7566,'1987-07-03',3000,NULL,20);
INSERT INTO EMP VALUES(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO EMP VALUES(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
INSERT INTO EMP VALUES(7876,'ADAMS','CLERK',7788,'1987-07-13',1100,NULL,20);
INSERT INTO EMP VALUES(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
INSERT INTO EMP VALUES(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
INSERT INTO EMP VALUES(7934,'MILLER','CLERK',7782,'1981-01-23',1300,NULL,10);

#开始查询操作
/*
1.查找部门是30的员工详细信息。
2.找出从事clerk工作的员工的编号、姓名、部门号。
3.检索出奖金多于基本工资的员工信息。
4.检索出奖金多于基本工资60%的员工信息。
5.找出10部门的经理、20部门的职员 的员工信息。
6.找出10部门的经理、20部门的职员 或者既不是经理也不是职员但是工资高于2000元的员工信息。
7.找出获得奖金的员工的信息。
8.找出奖金少于100或者没有获得奖金的员工的信息。
9.找出姓名以A、B、S开始的员工信息。
10.找到名字长度为6个字符的员工信息。
11.名字中不包含R字符的员工信息。
12.返回员工的详细信息并按姓名排序。
13.返回员工的信息并按工作降序工资升序排列。
14.计算员工的日薪(按30天)。
15.找出姓名中包含A的员工信息。
*/
SELECT * FROM emp WHERE DEPTNO=30;
SELECT EMPNO,ENAME,DEPTNO FROM emp WHERE JOB='CLERK';
SELECT * FROM emp WHERE SAL<COMM;
SELECT * FROM emp WHERE SAL*0.6<COMM;
SELECT * FROM emp WHERE (JOB='MANAGER' AND DEPTNO=10) OR (JOB='CLERK' AND DEPTNO=20);
SELECT * FROM emp WHERE (JOB='MANAGER' AND DEPTNO=10) OR (JOB='CLERK' AND DEPTNO=20) OR (JOB!='MANAGER' AND JOB!='CLERK' AND SAL > 2000);
SELECT * FROM emp WHERE COMM IS NOT NULL AND COMM!=0;
SELECT * FROM emp WHERE COMM IS NULL OR COMM=0 OR COMM<100;
SELECT * FROM emp WHERE ENAME LIKE 'A%' OR ENAME LIKE 'B%' OR ENAME LIKE 'S%';
SELECT * FROM emp WHERE CHAR_LENGTH(ENAME) = 6;
SELECT * FROM emp WHERE ENAME NOT LIKE '%R%';
SELECT * FROM emp ORDER BY ENAME ASC;
SELECT * FROM emp ORDER BY JOB DESC,SAL ASC;
SELECT ENAME,SAL/30 AS '日薪' FROM emp;
SELECT * FROM emp WHERE ENAME LIKE '%A%';


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值