MySQL基础操作语句

1. 数据输入完整性:创建数据表时候给其添加约束条件:分类:实体完整性,域完整性,引用完整性

      实体:即表中的一行(一条记录)代表一个实体(entity)

      实体完整性的作用:标识每一行数据不重复。主键;唯一标识数据库每一行这个一列,唯一标识数据库中每一条记录,每一个表中

约束条件:  主键约束(primary key)数据唯一,不能为NULL,先创建主键才能自增属性,主键value相同SQL报错

                唯一约束(unique),自动增长(auto_increment)

2. 创建主键约束三种方式:

   

   联合主键本质上一个主键 PRIMARY KEY(id,classid);

  3.创建表之后在添加主键:ALTER TABLE student ADD PRIMARY KEY (id)

  4. 唯一约束:性别 唯一: 这一列数值不能有重复元素,不能有多个NULL,允许空值

   

5.自动增长列:

3.引用完整性:外键:表中有其他表的主键,要想有外键,必须要现有主键,主键和外键类型必须一致

Student 是父表,Score是子表,对子表添加一个 外键约束:子表不允许出现主表之外数值:

      外键关键字: FOREIGN Key  constraint 关键字 外表之间进行外键约束 Constraint 约束名 主键

  外键约束两种方式:创建时候 2.ALTER 修改:

例:
CREATE TABLE student(
sid int pirmary key,
name varchar(50) not null,
sex varchar(10) default ‘男’
);

create table score(
    id int,
    score int,
    sid int , -- 外键列的数据类型一定要与主键的类型一致
    CONSTRAINT fk_score_sid foreign key (sid) references student(id)
);

  2. ALTER: 关键字 constarint 约束名称 references 关联

ALTER TABLE score ADD CONSTRAINT fk_stu_score FOREIGN KEY(sid) REFERENCES stu(sid);

4. 表与表之间的关系:

    1、一对一关系:人与身份证之间关系,主从关系设计方案:t_person 表示人,t_card 表示身份证

      ① t_card 表中添加外键列,并且添加外键唯一约束

       ② 给t_card 表的主键添加外键约束,即 t_card 表主键也是外键,reference 和constain 关键字

        2.一对多:对多和多对一,这是从哪个角度去看得出来的。t_user和t_section的关系,从t_user来看就是一对多,而从t_section的角度来看就是多对一!这种情况都是                  在多方创建外键,从表sid不是主键

    3.多对多:例如t_stu和t_teacher表,即一个学生可以有多个老师,而一个老师也可以有多个学生。这种情况通常需要创建中间表来处理多对多关系,创建中间表,给出两个外键,一个对应t_stu,另外一个对应 t_tea

5. 为什么进行拆表:1.解决表的冗余数据,2.

-------------------------------------------------------------------------------------------------------------------------

1. 多表查询:1.合并结果集 UNION ,UNION ALL    

           2. 连接查询 JOIN  3.子查询

1.批量插入; INSERT INTO A VALUES(‘a‘,10),(‘b‘,20),(‘c‘,30);

  合并查询集:SELECT * from table_A UNION select * FROM table_B;// 注意:合并查询 列数据类型必须一致

     UNION vs UNION ALL区别:前者查询两种并集,UNION ALL 显示两个表所有的数据

2. 连接查询:非常重要:内连接,外连接,自然连接 

    连接查询求出多个表的乘积,t1*t2:

从之上结果显示出来看,直接连接查询 出现迪卡尔效应,出现多个扩展集合,出现非常多的重复集合,在查询过程中必须加入过滤条件通过关联关系 去除迪卡尔效应 通过主外键之间的关系去除冗余信息

  1. 使用主外键关系做为条件来去除无用信息:注意:多表查询必须指定列的从属表:emp.deptno;

        SELECT * from emp,dept, where emp.deptno=dept.deptno;

     2.1 上面连接语句就是内连接,但是不是SQL中标准查询方式,在SQL中标准查询语句: ON 只用于内连接 MySQL默认的连接方式就是内连接

SELECT * FORM emp e INNER JOIN dept d ON e.deptno=d.deptno;// 内连接 关键字 INNERJOIN , ON 

e,d 别名,AS 省去,如果 * 换成 e.score,e.name

  2.2 外链接: 从左连接,从右连接,全外连接

左外连接:

          SELECT * FROM student s LEFT JOIN score  c ON s.stuid=c.stuid;

左连接是先查询出左表(即以左表为主),然后查询右表,右表中满足条件的显示出来,不满足条件的显示NULL。左右表分开显示

连接查询心得:两张表至少一个主外键条件,三张表至少需要俩个主外键关系

连接不限与两张表,连接查询也可以是三张、四张,甚至N张表的连接查询。通常连接查询不可能需要整个笛卡尔积,而只是需要其中一部分,那么这时就需要使用条件来去除不需要的记录。这个条件大多数情况下都是使用主外键关系去除。

两张表的连接查询一定有一个主外键关系,三张表的连接查询就一定有两个主外键关系,所以在大家不是很熟悉连接查询时,首先要学会去除无用笛卡尔积,那么就是用主外键关系作为条件来处理。如果两张表的查询,那么至少有一个主外键条件,三张表连接至少有两个主外键条件

3.自然连接:连接查询明显出现无用笛卡尔乘积,需要利用主外键之间关系去除无用,自然连接自动找到这一等式关系:条件:

    1.两张表中名称与数据类型完全一致,在连接查询只需要数据类型一致就行,

 

4. 子查询:非常重要

  一个SELECT 语句中嵌套另外一个SELECT,子查询就是一个嵌套查询,如果一条语句中存在两个或者两个以上SELECT,那么就是子查询     

 l 子查询出现的位置:

  • where后,作为条为被查询的一条件的一部分;
  • from后,作表;

l 当子查询出现在where后作为条件时,还可以使用如下关键字:

  • any
  • all

l 子查询结果集的形式:

  • 单行单列(用于条件)
  • 单行多列(用于条件)
  • 多行单列(用于条件)
  • 多行多列(用于表)

练习:

1.查询与SCOTT 同一个部门员工:    求出SCOTT属于哪一个部门

     SELECT * FROM emp WHERE enam=‘SCOTT‘;//

     SELECT  deptno from emp where ename=‘SCOTT‘;

之上语句两条查询语句进行合并 SELECT * from emp WHERE deptno=(SELECT deptno from emp where enam=‘SCOTT‘);

2.查询工资 高于 JONES 的工资

SELECT sal FROM emp WHERE ename=‘JSON‘;  SELECT * FROM emp WHERE sal>($第一步查询语句)

结果: SELECT * FROM emp WHERE sal > (SELECT sal FROM emp WHERE ename=‘JONES‘)

3. 工资高于30 部门所有人的信息;

SELECT * FROM emp WHERE sal>(SELECT MAX(sal) FROM emp WHERE deptno=30);

4.查询工作和工资与MARTIN(马丁)完全相同的员工信息 多个相等值 用IN

SELECT * FROM emp WHERE (job,sal)IN (SELECT job,sal FROM emp WHERE  ename=‘MARTN‘)

5. 查询员工编号为7788的员工名称、员工工资、部门名称、部门地址

SELECT e.ename,e.sal,d.dname,d.loc FROM emp e,dept d WHERE e.deptno=d.deptno AND ename=‘7788‘; 这个

使用子查询: SELECT e.ename,e.sal,d.dname,d.locfrom emp,(SELECT * from dept) d WHERE e.deptno=d.deptno AND ename=‘7788‘;

6. 数据库备份: 

      生成SQL 脚本:mysqldump -uroot -p123 数据库名称>路径    mysqldump  保留数据库建立的代码,代码不存在创建数据库的语句

数据库为恢复:前提先有数据库 SOURCE c:\mysql.sql

采用这种方式 不使用Source mySQL -u root -p123 mydb1<d:\mydb1.sql;

时间: 2024-11-04 21:11:41

MySQL基础操作语句的相关文章

PHP之路——MySql基础操作语句

1,创建数据库,create datebase 数据库名,在这里kenan建立一个数据库名为myfirstdb create database myfirstdb; 2,查看所有的数据库 show databases; 3,选择数据库,只有先选择数据库,才能在选择的数据库中进行数据库操作 use myfirstdb; 4,删除数据库 drop database myfirstdb; 数据库的增删改查 这里要先使用 use来选择要操作的数据库 1,建立数据库表 use myfirstdb; cre

MySQL数据库基础操作语句

SQL语言主要用于存取数据.查询数据.更新数据和管理关系数据库系统,分为3种类型: 1.DDL语句 数据库定义语言: 数据库.表.视图.索引.存储过程,例如CREATE DROP ALTER 2.DML语句 数据库操纵语言: 插入数据INSERT.删除数据DELETE.更新数据UPDATE.查询数据SELECT 3.DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT.REVOKE(取消授权)SQL基础操作语句: 管理员登录:mysql -uroot -p 设置管理员密码:set pa

mysql基础操作、sql技巧和sql的常见优化

一.常见操作 1.复制表结构create table t2 like t1 复制表数据insert into t2 select * from t1 2.mysql索引 alter table用来创建普通索引.unique索引或primary key索引 alter table t add index index_name(column_list) alter table t add unique(column_list) alter table t add primary key(column

MYSQL 基础操作

1.MySQL基础操作 一:MySQL基础操作 1:MySQL表复制 复制表结构 + 复制表数据 create table t3 like t1; --创建一个和t1一样的表,用like(表结构也一样) insert into t3 select * from t1; --t1的数据全部拿过来,注意是表结构一致才select* ,否则选择相应的的字段列插入 create table t1( id int unsigned not null auto_increment primary key,

PHP - PDO 之 mysql 基础操作

<?php /* pdo 学习 */ $dsn = 'mysql:host=localhost;dbname=cswl';//构建连接dsn $db = new pdo($dsn,'root','');//实例化pdo[第二个参数是用户名,第三个为密码] #.查询 $obj = $db->prepare("show tables;");//准备预处理sql语句 $obj->execute();//执行预处理语句 $obj->fetchALL(PDO::FETCH

Mysql 数据库 操作语句

Mysql 数据库 操作语句 mysql 格式语句规范如何登陆你的数据库?举例! 如果你的是 编译安装的花 那就得去编译安装后的那个目录中去,我的是安装到/usr/local/mysql 下 登陆数据库: cd /usr/local/mysql bin/mysql -u root -p 然后输入密码mysql-> show databases: 察看数据库记住每执行一句要带: 一.mysql常用语句创建,删除和最基本查询: 显示数据库    mysql->showdatabases; 创建数据

Mysql(Mariadb) 基础操作语句 (持续更新)

基础SQL语句,记录以备查阅.(在HeiDiSql中执行) # 创建数据库 Create Database If Not Exists VerifyIdear Character Set UTF8; # 创建表 Create Table If Not Exists VerifyIdear.MyTable( ID Bigint(8) unsigned Primary key Auto_Increment, Updatetime DateTime, name VarChar(128) )Engine

MySql常用操作语句(1:启动、连接数据库及用户操作)

下方将个人常用的MySql操作语句(Win7下)总结如下: 1. 启动与关闭数据库 “管理员”权限, MySql安装目录下bin目录//:  1.1 启动 @>net start mysql  1.2 关闭 @>net stop mysql;  1.3 问题:服务名无效 这种情况是mysql服务没有安装,这时需要在同个目录下安装服务: @>mysqld -install 相应地,卸载命令是: @>mysqld -remove 2. 连接数据库 “管理员”权限, MySql安装目录下

MySql常用操作语句(2:启动、连接数据库及用户操作)

下方将个人常用的MySql操作语句(Win7下)总结如下: 1.数据库(database)管理  1.1 create 创建数据库 mysql> create database firstDB;  1.2 show 查看所有数据库 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | firstDB | | mysql | | perf