MySQL数据库

MySQL安装与配置

注意使用root权限进行安装:

apt-get install mysql-server mysql-client

apt-get install libmysqlclient-dev

ubuntu命令行登录mysql,验证是否成功:

mysql -u root -p

输入密码,如果出现以下提示证明没有问题

mysql>

DDL数据定义语言

DDL:Data Definition Language

作用:用于描述数据库中要存储的现实世界实体的语言。即创建数据库和表的结构。

常用关键字:

CREATE 创建表

ALTER 修改表中对应的列

DROP 删除表

TRUNCATE 删除表中所有内容

  • SQL语言不区分大小写

创建数据库

示例:

create database test;  //创建名为test的DB

create table Person1(personID int NOT NULL AUTO_INCREMENT,PRIMARY KEY(personID),FirstName varchar(15),LastName varchar(15),Age int);
//创建表

NOT NULL表示该列值不能为空,AUTO_INCREMENT表示自动增长,PRIMARY KEY表示主键。

查看、删除数据库

修改、备份、恢复数据库

创建表

  • 注意:创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列类型。建表至少需要

给出表中的一列信息,否则会报错。

例:user对象

id int

name string

password string

birthday date

Id Name Password birthday

修改表

使用 ALTER TABLE 语句 追加, 修改, 或删除列的语法.


修改表的名称:Rename table 表名 to 新表名

修改表的字符集:alter table student character set utf8;

示例:

alter table persons add addr varchar(15);

alter table persons change addr addr1 varchar(15);

alter table Person drop addr_wd;

MySQL常用数据类型

分类 数据类型 说明
数值类型 BIT(M) BOOL,BOOLEAN TINYINT [UNSIGNED] [ZEROFILL] SMALLINT [UNSIGNED] [ZEROFILL] INT [UNSIGNED] [ZEROFILL] BIGINT [UNSIGNED] [ZEROFILL] FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] 位类型。M指定位数,默认值1,范围1-64 使用0或1表示假或真 带符号的范围是-128到127。无符号0到255。 2的16次方 2的32次方 2的64次方 M指定显示长度,d指定小数位数 (5, 2) 表示比float精度更大的小数
文本、二进制类型 CHAR(size) VARCHAR(size) BLOB LONGBLOB TEXT(clob) LONGTEXT(longclob) 固定长度字符串(size表示 有多少个字符) 可变长度字符串 (varchar 是可变的) varchar(50)表示最大可以存放的长度是50 二进制数据 大文本
时间日期 DATE/DATETIME/TimeStamp 日期类型(YYYY-MM-DD) (YYYY-MM-DD HH:MM:SS),TimeStamp表示时间戳,它可用于自动记录insert、update操作的时间

lVARCHAR、BLOB和TEXT类是变长类型。每个类型的存储需求取决于列值的实际长度。

DML数据操纵语言

  • DML:Data Manipulation Language

  • 作用:用于向数据库表中插入、删除、修改数据。

  • 常用关键字:

  • INSERT UPDATE DELETE

Insert语句

  • 使用 INSERT 语句向表中插入数据。

插入的数据应与字段的数据类型相同。

数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。

在values中列出的数据 。

字符和日期型数据应包含在单引号中。

插入空值,不指定或insert into table value(null)

mysql中文乱码

•mysql有六处使用了字符集,分别为:client 、connection、database、results、server 、system。

•client是客户端使用的字符集。

•connection是连接数据库的字符集设置类型,如果程序没有指明连接数据库使用的字符集类型就按照服务器端默认的字符集设置。

•database是数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。

•results是数据库给客户端返回时使用的字符集设定,如果没有指明,使用服务器默认的字符集。

•server是服务器安装时指定的默认字符集设定。

•system是数据库系统使用的字符集设定。

注意插入数据时的中文问题:

show variables like 'character%';

如果插入中文时,要调整编码为GBK

show variables like 'character%';

修改客户端工具所用的编码

set character_set_client=gbk;

客户端显示结果的编码

set character_set_results=gbk;

Update语句

  • 使用 update语句修改表中数据。

  • UPDATE语法可以用新值更新原有表行中的各列。

  • SET子句指示要修改哪些列和要给予哪些值。

  • WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行。

示例:

Delete语句

如果不使用where子句,将删除表中所有数据。

Delete语句不能删除某一列的值(可使用update)

使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。

同insert和update一样,从一个表中删除记录将引起其它表的参照完整性问题,在修改数据库数据时,头脑中应该始终不要忘记这个潜在的问题。

DQL数据查询语言

  • DQL:Data Query Language

  • 作用:查询数据。

  • 常用关键字:

SELECT

Select语句

基本select语句

  • Select 指定查询哪些列的数据。

  • column指定列名。

  • *号代表查询所有列。

  • From指定查询哪张表。

  • DISTINCT可选,指显示结果时,是否剔除重复数据

在select语句中可使用表达式对查询的列进行运算

在select语句中可使用as语句

在where子句中经常使用的运算符

比较运算符 > < <= >= = <> 大于、小于、大于(小于)等于、不等于
BETWEEN ...AND... 显示在某一区间的值(含头含尾)
IN(set) 显示在in列表中的值,例:in(100,200)
LIKE ‘张pattern’ 模糊查询
IS NULL 判断是否为空
逻辑运算符 and 多个条件同时成立
or 多个条件任一成立
not 不成立,例:where not(salary>100);

Like语句中,% 代表零个或多个任意字符,_ 代表一个字符,例first_name,like ‘_a%’;

用where筛选出age大于30的成员:

使用order by 子句排序查询结果。

  • Order by 指定排序的列,排序的列即可是表中的列名,也可以是select 语句后指定的列名。

  • Asc 升序、Desc 降序

  • ORDER BY 子句应位于SELECT语句的结尾。

数据的完整性

  • 数据完整性是为了保证插入到数据库中的数据是正确的,它防止了用户可能的输入错误。

  • 数据完整性主要分为以下三类:

  1. 实体完整性:

规定表的一行(即每一条记录)在表中是唯一的实体。实体完整性通过表的主键来实现。

  1. 域完整性:

指数据库表的列(即字段)必须符合某种特定的数据类型或约束。比如NOT NULL。

  1. 参照完整性:

保证一个表的外键和另一个表的主键对应。

数据库主键

​ 主键:表中经常有一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。

​ 当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。 作用 :

1)保证实体的完整性;

2)加快数据库的操作速度,主键默认建立索引

3) 在表中添加新记录时,会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。

4) 自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

定义表的约束

  • 定义主键约束

    • primary key:不允许为空,不允许重复 (可以区分两条记录的唯一性)
    • 删除主键:alter table tablename drop primary key;
  • 定义主键自动增长
    • auto_increment
  • 定义唯一约束
    • unique
  • 定义非空约束
    • not null
  • 定义外键约束
    • constraint ordersid_FK foreign key(ordersid) references orders(id);

示例:

create table pats(patID int NOT NULL AUTO_INCREMENT,PRIMARY KEY(patID),person1ID int
default NULL,patName varchar(15) default NULL,FOREIGN KEY (person1ID) REFERENCES persons(personID));

多表设计

避免数据的冗余

一对多

Create table province (
    id int primary key,
    province varchar(9) not null
   )
insert into province values(1,'shandong');

Create table students(
    id int primary key,
    name varchar(5) not null,
    province_id int not null
)

Alter table students add constraint FK_student_Provinced     foreign key (province_id)  references province(id);

alter table employee add constraint FK_employee_departmentid foreign key (departmentid) references department(id);

多对多

create table TEACHER(
ID int primary key,
NAME varchar(100)
);
insert into teacher values(1,'math teacher');
insert into teacher values(2,'chinese teacher');
insert into teacher values(3,'english teacher');

create table STUDENT3(
ID int primary key,
NAME varchar(100)
);

insert into student3 values(1,'lily');
insert into student3 values(2,'lucy');
insert into student3 values(3,'lilei');
insert into student3 values(4,'lilyzhou');

insert into TEACHER_STUDENT(1,1);
create table TEACHER_STUDENT(
T_ID int,
S_ID int,
primary key(T_ID,S_ID),
constraint T_ID_FK foreign key(T_ID) references TEACHER(ID),
constraint S_ID_FK foreign key(S_ID) references STUDENT3(ID)
);

一对一

方法1:外键关联+唯一

create table PERSON(
ID int primary key,
NAME varchar(100)
);
create table computer(
ID int primary key,
brand varchar(20),
PERSON_ID int unique,
constraint PERSON_ID_FK foreign key(PERSON_ID) references PERSON(ID)
);

方法2:主键关联

constraint PERSON_ID_FK foreign key(ID) references PERSON(ID)

SQL数据库查询语言(1)的更多相关文章

  1. Sql数据库查询语言

    1.概述 Sql是一种面向数据库的结构化查询语言.是符合美国国家标准化组织ANSI的一种计算机标准语言. Sql具对数据库的操作有:增删改查.创建数据库.创建表.创建存储过程.创建视图等 RDBMS关 ...

  2. 关系型数据库查询语言 SQL 和图数据库查询语言 nGQL 对比

    摘要:这篇文章将介绍图数据库 Nebula Graph 的查询语言 nGQL 和 SQL 的区别. 本文首发于 Nebula Graph 官方博客:https://nebula-graph.com.c ...

  3. SQL数据库

    SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出“做什么”的命令,“怎么做” ...

  4. SQL数据库基础知识-巩固篇<一>

    SQL数据库基础知识-巩固篇<一>... =============== 首先展示两款我个人很喜欢的数据库-专用于平时个人SQL技术的练习<特点:体积小,好安装和好卸载,功能完全够用 ...

  5. SQL数据库学习,常用语句查询大全

    数据库学习 sql server数据库基本概念 使用文件保存数据存在几个缺点: 1.文件的安全性问题: 2.文件不利于查询和对数据的管理: 3.文件不利于存放海量数据 4.文件在程序中控制不方便. 数 ...

  6. 一文了解各大图数据库查询语言(Gremlin vs Cypher vs nGQL)| 操作入门篇

    文章的开头我们先来看下什么是图数据库,根据维基百科的定义:图数据库是使用图结构进行语义查询的数据库,它使用节点.边和属性来表示和存储数据. 虽然和关系型数据库存储的结构不同(关系型数据库为表结构,图数 ...

  7. KTV项目 SQL数据库的应用 结合C#应用窗体

    五道口北大青鸟校区 KTV项目 指导老师:袁玉明 歌曲播放原理 SQL数据库关系图 C#解决方案类图 第一步:创建数据库连接方法和打开方法和关闭方法! public class DBHelper { ...

  8. jquery autocomplete实现读取sql数据库自动补全TextBox

    转自我本良人 原文 jquery autocomplete实现读取sql数据库自动补全TextBox 项目需要这样子一个功能,其他部门提的意见,只好去实现了哦,搞了好久才弄出来,分享一下. 1.前台页 ...

  9. 基于Qt5.5.0的sql数据库、SDK_tts文本语音朗读的CET四六级单词背诵系统软件的编写V1.0

    作者:小波 QQ:463431476 请关注我的博客园:http://www.cnblogs.com/xiaobo-Linux/ 我的第二款软件:CET四六级单词背诵软件.基于QT5.5.0.sql数 ...

随机推荐

  1. Cocos2D中的内部函数

    virtual bool isVisible();    // 是否可见    virtual void setVisible(bool visible);      // 设置是否可见    boo ...

  2. IDA Pro 权威指南学习笔记(七) - 其他 IDA 显示窗口

    默认情况下 IDA 不会打开这些窗口,可通过 View -> Open Subviews 命令打开 Strings 窗口(Strings) Strings 窗口中显示的是从二进制文件中提取出的一 ...

  3. PHP判断当前协议是否为HTTPS

    function is_https() { if ( !empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'o ...

  4. pandas分组和聚合

    Pandas分组与聚合 分组 (groupby) 对数据集进行分组,然后对每组进行统计分析 SQL能够对数据进行过滤,分组聚合 pandas能利用groupby进行更加复杂的分组运算 分组运算过程:s ...

  5. 【知识碎片】python 篇

    领域:运维 网站 游戏 搜索 嵌入式 C/S软件 Openstack二次开发 绿色版:Portable Python 面向对象.解释型动态语言 env python 切换版也好使,自己寻找系统中pyt ...

  6. 英语单词state和status的区别

    state:比较常用,各种状态都可以用它,但是它更着重于一种心理状态或者物理状态. Status:用在人的身上一般是其身份和地位,作"状态,情形"讲时,多指政治和商业. state ...

  7. Hadoop编码解码【压缩解压缩】机制详解(1)

    想想一下,当你需要处理500TB的数据的时候,你最先要做的是存储下来.你是选择源文件存储呢?还是处理压缩再存储?很显然,压缩编码处理是必须的.一段刚刚捕获的60分钟原始视屏可能达到2G,经过压缩处理可 ...

  8. pl/sql基础语法

  9. Unity抗锯齿的设置

    [Unity抗锯齿的设置] "Edit"->"Project Settings"->"Quality",可以质量设置Inspec ...

  10. laravel tinker测试模型添加属性

    php artisan tinker 新建一个模型对象 $post=new \App\Posts(); 给对象的属性挨个赋值 $post->title="this is title&q ...