MySQL基础学习二

一,数据库操作

  主键

    主键是索引的一种,并且是唯一性索引,且必须定义为primary key。一个表只有一个主键,主键可以由多列组成。

    声明主键的关键字为:primary key

简单的一个声明主键的示例:

create table score(sid int auto_increment primary key)engine=innodb default charset=utf8    
primary key为声明的关键字。

  外键

    如果一个实体的某个字段指向另一个实体的主键,就称为外键。

    被指向的实体,称之为主实体(主表),也叫父实体(父表)。
    负责指向的实体,称之为从实体(从表),也叫子实体(子表)。

  作用:用于约束处于关系内的实体。增加子表记录的时候,是否有与之对应的父表记录,如果主表没有相关的记录,从表不能插入。

外键示例代码:

#创建被关联的子表
create table class(cid int auto_increment primary key,clname char(20))engine=innodb default charset=utf8;
#插入数据
insert into class(clname) values("三年级"),("一年级"),("四年级"),("二年级");

#创建主表(父表)
create table student(sid int auto_increment primary key,sname char(12), class_id int,constraint fk_id_class foreign key(class_id) references class(cid))
engine=innodb default charset=utf8;
#constraint fk_id_class foreign key(class_id) references class(cid)关键词,foreign key后跟父表列名,reference后加子表列名。
insert into student(sname,class_id) values("stu1"),("stu2"),("stu3");

外键变种:

外键与主键都有唯一索引,且都不能重复。区别就是主键不能为空,外键的唯一索引可以为空。

外键变种分为以下几种关系:

一对多,一对一,多对多

1,一对一关系:

                create table userinfo1(
                    id int auto_increment primary key,
                    name char(10),
                    gender char(10),
                    email varchar(64)
                )engine=innodb default charset=utf8;

                create table admin(
                    id int not null auto_increment primary key,
                    username varchar(64) not null,
                    password VARCHAR(64) not null,
                    user_id int not null,
                    unique uq_u1 (user_id),#关键字,指定外键的一对一关系
                    CONSTRAINT fk_admin_u1 FOREIGN key (user_id) REFERENCES userinfo1(id)
                )engine=innodb default charset=utf8;

2,一对多关系

3,多对多关系

create table userinfo2(
                    id int auto_increment primary key,
                    name char(10),
                    gender char(10),
                    email varchar(64)
                )engine=innodb default charset=utf8;

                create table host(
                    id int auto_increment primary key,
                    hostname char(64)
                )engine=innodb default charset=utf8;

                create table user2host(
                    id int auto_increment primary key,
                    userid int not null,
                    hostid int not null,
                    unique uq_user_host (userid,hostid),#关键字,指定为多对多的关系语句
                    CONSTRAINT fk_u2h_user FOREIGN key (userid) REFERENCES userinfo2(id),
                    CONSTRAINT fk_u2h_host FOREIGN key (hostid) REFERENCES host(id)
                )engine=innodb default charset=utf8;

数据表的操作:

插入,修改,选择,删除数据:

   

#一次插入多条数据的方式:
insert into student(sname,class_id) values("stu1"),("stu2"),("stu3");

#修改表内数据
update student set sname="stu10"

#操作显示表数据
select sid,sname from student;#显示学生表的id与学生名字
select sid,sname from student where sid>3;显示表中sid大于3,的学生id与姓名

#删除表数据
delete from student where id=1;#删除表中id为1的数据

  where条件语句

  where:条件限制语句,在数据操作中需要对数据进行按条件筛选,就需要用到where语句。在使用时徐注意:

      where函数条件后不允许加聚合函数条件

  语法:  where 条件表达式

    条件表达式的运算符

模糊匹配的关键字   like

模糊匹配补充 _下划线   指的是该字符之后的一个任意数值,示例:where username like"a_"

自增数据操作

  在数据表的会经常设置自增数据,自增数据是可以对其进行修改查看等操作的。由于mysql的步长是基于会话操作的,每次修改针对的是每一个会话而不是全局,如果需要对全局进行修改要是global

  查看:

 show session variables like ‘auto_inc%‘;
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 1     |
| auto_increment_offset    | 1     |
+--------------------------+-------+
2 rows in set, 1 warning (0.00 sec)

  修改自增步长:

 set session auto_increment_increment=2;
Query OK, 0 rows affected (0.00 sec)
 show session variables like ‘auto_inc%‘;
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 2     |
| auto_increment_offset    | 1     |
+--------------------------+-------+
2 rows in set, 1 warning (0.00 sec)

全局查看:

全局查看是基于关键字global。

设置全局步长值:set global auto_increment_increment=2;

 show global variables like ‘auto_inc%‘;
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 1     |
| auto_increment_offset    | 1     |
+--------------------------+-------+
2 rows in set, 1 warning (0.00 sec)
时间: 2024-10-08 12:46:35

MySQL基础学习二的相关文章

puppet基础学习(二)

puppet基础学习(二) 六.ResourceOrdering(资源定序) 使用变化参数before , require , notify , subscribe catalog是对一个给定的系统的所有资源及关系的编译,在编译catalog时,除非我们指定资源的执行顺序,不然puppet是以其自己的顺序管理,大多数时候puppet指定适当的方式,例如puppet管理用户gigabyte应该存在和文件夹/home/gigabyte/bin应该存在并属于用户gigabyte时,puppet会自动指

MySQL 基础(二)

MySQL 基础(二) ============================================================================== 概述: ============================================================================== MySQL   1.数据结构: ★分类: 结构化数据:  关系型数据库 半结构化数据:YAML.XML.JSON 非结构化数据:日志文件,NoSQL  

MySQL基础学习之数据查询

一般查询 SELECT * FROM 表名 SELECT 属性名  FROM  表名 条件查询 SELECT 属性名 FROM 表名  WHERE 条件表达式 查询数据值1,数据值2的表单 SELECT *  FROM  表名  WHERE  属性名 [NOT] IN(数据值1,数据值2....) 查询数值1,数据2的表单 SELECT *  FROM  表名  WHERE  属性=值  AND 属性1=值1 查询数值1到数值2之间的表单 SELECT *  FROM  表名  WHERE  属

MySQL基础学习之函数

数学函数 绝对值      abs() 圆周率      PI() 平方根 sqrt() 模除取余   mod(被除数,除数) 随机数      rand() 四舍五入    round(数字) 次方         pow(5,2) e为底的指数函数  exp(数字) 字符串函数 字符长度       length(字符) 字符连接       concat(字符1,字符2) 带符号的字符连接    concat_ws('-','su','zhou') 字符插入      insert('su

MySQL基础学习之数据表

查看数据表 SHOW TABLE; 查看数据表详细结构 SHOW CREATE TABLE 表名\G; 创建数据表 CREATE TABLE 表名(数据名 类型,数据名1  类型2); CREATE TABLE department ( d_id INT(10) , d_name VARCHAR(20) , function VARCHAR(20) , address VARCHAR(30) ); 删除数据表 DROP TABLE 表名; 修改数据表 修改数据表名        ALTER TA

MySQL命令学习(二)

(13)where字句操作符 =            等于 <>          不等于 !=           不等于 <            小于 >            大于 >=          大于等于 BETWEEN          在指定的两个值之间 例如: 找出学号是0007到0009之间的学生记录(不包括0009)? SELECT* FROM student_info WHERE stu_id BETWEEN 1001101620007 AND

MySQL基础(二)——DDL语句

MySQL基础(二)--DDL语句 1.什么是DDL语句,以及DDL语句的作用 2.基本的数据库对象包括哪些 3.建表语句 4.修改表结构的语句

MySQL基础学习总结

1.MySQL基础概念 mysql逻辑架构如下: 每个客户端连接都会在服务器中拥有一个线程,这个连接的查询只会在这个单独的线程中执行. MySQL是分层的架构.上层是服务器层的服务和查询执行引擎,下层是存储引擎.虽然有很多不同作用的插件API,但存储引擎API还是最重要的.如果能理解MySQL在存储引擎和服务层之间处理查询时如何通过API来回交互,就能抓住MySQL的核心基础架构的精髓. 数据库系统实现了各种死锁检测和死锁超时机制,InnoDB目前处理死锁的机制是,将持有最少行级排它锁的事务进行

MySQL基础学习(二) 常用SQL命令

一. 1. select version();  查看数据库版本 2. select user(); 查看当前用户 3. select now(); 查看当前时间 4. show databases; 列举所有数据库实例 5. select database();  查看当前数据库 6. use db_name;  选择某个数据库 7. show tables; 查看当前数据库下得所有表 二. 权限类