CREATE DATABASE `thinkcmf` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_c

CREATE DATABASE `thinkcmf` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_c,第1张

数据库字符集和校对

每一个数据库有一个数据库字符集和一个数据库校对规则,它不能够为空。CREATE DATABASE和

ALTER DATABASE语句有一个可选的子句来指定数据库字符集和校对规则:

CREATE DATABASE db_name

[[DEFAULT] CHARACTER SET charset_name]

[[DEFAULT] COLLATE collation_name]

ALTER DATABASE db_name

[[DEFAULT] CHARACTER SET charset_name]

[[DEFAULT] COLLATE collation_name]

例如:

CREATE DATABASE db_name

DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;

MySQL这样选择数据库字符集和数据库校对规则:

·如果指定了CHARACTER SET X和COLLATE Y,那么采用字符集X和校对规则Y。

·如果指定了CHARACTER SET X而没有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默认校对规则。

·否则,采用服务器字符集和服务器校对规则。

如果在CREATE TABLE语句中没有指定表字符集和校对规则,则使用数据库字符集和校对规则作为默认值。

SQL 基础应用及information_schema

1SQL(结构化查询语句)介绍

SQL标准:SQL 92  SQL99

57版本后启用SQL_Mode 严格模式

2SQL作用

SQL 用来管理和 *** 作MySQL内部的对象

SQL对象:

库:库名,库属性

表:表名,表属性,列名,记录,数据类型,列属性和约束

3SQL语句的类型

DDL:数据定义语言    data definition language

DCL:数据控制语言    data control language

DML:数据 *** 作语言    data manipulation language

DQL:数据查询语言    data query language

4数据类型

41 作用:

控制数据的规范性,让数据有具体含义,在列上进行控制

42种类

421 字符串

char(32)

定长长度为32的字符串。存储数据时,一次性提供32字符长度的存储空间,存不满,用空格填充。

varchar(32):

可变长度的字符串类型。存数据时,首先进行字符串长度判断,按需分配存储空间

会单独占用一个字节来记录此次的字符长度

超过255之后,需要两个字节长度记录字符长度。

面试题:

1 char 和varchar的区别? 

(1) 255  65535

(2) 定长(固定存储空间)  变长(按需)

2 char和varchar 如何选择?

(1) char类型,固定长度的字符串列,比如手机号,身份z号,yhk号,性别等

(2) varchar类型,不确定长度的字符串,可以使用。

3 enum 枚举类型

enum('bj','sh','sz','cq','hb',)

数据行较多时,会影响到索引的应用

注意:数字类禁止使用enum类型

422 数字

1 tinyint

2 int

423 时间

1 timestamp

2 datetime

424 二进制

5 表属性

存储引擎 :engine =  InnoDB

字符集  :charset = utf8mb4

utf8    中文  三个字节长度

utf8mb4 中文  四个字节长度    才是真正的utf8

支持emoji字符

排序规则(校对规则) collation

针对英文字符串大小写问题

6 列的属性和约束

61 主键: primary key (PK)

说明:

唯一

非空

数字列,整数列,无关列,自增的

聚集索引列?

是一种约束,也是一种索引类型,在一张表中只能有一个主键。

62 非空: Not NULL

说明:

我们建议,对于普通列来讲,尽量设置not null

默认值 default : 数字列的默认值使用0 ,字符串类型,设置为一个nil null

63 唯一:unique

不能重复

64 自增 auto_increment

针对数字列,自动生成顺序值

65 无符号 unsigned

针对数字列 

66 注释 comment

7 SQL语句应用

71 DDL:数据定义语言

711 库 

(1)建库

mysql> create database oldguo charset utf8mb4;

mysql> show databases;

mysql> show create database oldguo;

(2)改库

mysql> alter database oldguo1 charset utf8mb4;

(3)删库

mysql> drop database oldguo1;

712 表

(0)建表建库规范:

1、库名和表名是小写字母

为啥?

开发和生产平台可能会出现问题。

2、不能以数字开头

3、不支持-  支持_

4、内部函数名不能使用

5、名字和业务功能有关(his,jf,yz,oss,erp,crm)

(1)建表

create table oldguo (

ID int not null primary key AUTO_INCREMENT comment '学号',

name varchar(255) not null comment '姓名',

age tinyint unsigned not null default 0 comment '年龄',

gender enum('m','f','n') NOT null default 'n' comment '性别'

)charset=utf8mb4 engine=innodb;

(2)改表

1 改表结构

-- 例子:

-- 在上表中添加一个手机号列15801332370(重点)

-- alter table oldguo add telnum char(11) not null unique comment '手机号';

-- 练习:

-- 添加一个状态列

ALTER TABLE oldguo ADD state TINYINT  UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态列';

-- 查看列的信息

DESC  oldguo;

-- 删除state列(不代表生产 *** 作)

ALTER TABLE oldguo DROP state;

-- online-DDL : pt-osc (自己研究下)

-- 在name后添加 qq 列 varchar(255)

ALTER TABLE oldguo ADD qq VARCHAR(255) NOT NULL UNIQUE  COMMENT 'qq' AFTER NAME;

-- 练习 在name 之前添加wechat列

ALTER TABLE oldguo ADD wechat VARCHAR(255) NOT NULL UNIQUE COMMENT '微信' AFTER ID;

-- 在首列上添加 学号列:sid(linux58_00001)

ALTER TABLE oldguo ADD sid VARCHAR(255) NOT NULL UNIQUE COMMENT '学生号' FIRST;

-- 修改name数据类型的属性

ALTER TABLE oldguo  MODIFY NAME VARCHAR(128)  NOT NULL ;

DESC oldguo;

-- 将gender 改为 gg 数据类型改为 CHAR 类型

ALTER TABLE oldguo  CHANGE gender gg CHAR(1) NOT NULL DEFAULT 'n' ;

DESC oldguo;

72 DML 数据 *** 作语言

721 INSERT

--- 最简单的方法插入数据

DESC oldguo;

INSERT INTO oldguo VALUES(1,'oldguo','22654481',18);

--- 最规范的方法插入数据(重点记忆)

INSERT INTO oldguo(NAME,qq,age) VALUES ('oldboy','74110',49);

--- 查看表数据(不代表生产 *** 作)

SELECT FROM oldguo;

722 UPDATE (注意谨慎 *** 作!!!!)

UPDATE oldguo SET qq='123456' WHERE id=5 ;

723  DELETE (注意谨慎 *** 作!!!!)

DELETE FROM oldguo WHERE id=5;

724 生产需求:将一个大表全部数据清空

DELETE FROM oldguo;

TRUNCATE TABLE oldguo;

DELETE 和 TRUNCATE 区别

1 DELETE 逻辑逐行删除,不会降低自增长的起始值。

效率很低,碎片较多,会影响到性能

2 TRUNCATE ,属于物理删除,将表段中的区进行清空,不会产生碎片。性能较高。

725 生产需求:使用update替代delete,进行伪删除

1 添加状态列state (0代表存在,1代表删除)

ALTER TABLE oldguo ADD state TINYINT NOT NULL DEFAULT 0 ;

2 使用update模拟delete

DELETE FROM oldguo WHERE id=6;

替换为

UPDATE oldguo SET state=1 WHERE id=6;

SELECT FROM oldguo ;

3 业务语句修改

SELECT FROM oldguo ;

改为

SELECT FROM oldguo WHERE state=0;

如何在linux下安装mysql数据库并配置

关于本文

本文将以MySQL 5051为例,以CentOS 5为平台,讲述MySQL数据库的安装和设置。

2 关于MySQL

MySQL是最流行的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL AB是一家由MySQL开发人员创建的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是MySQL AB的注册商标。

MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去。

MySQL的官方发音是“My Ess Que Ell”,而不是“My sequel”。但是你也可以使用“My sequel”和其他的方言。

MySQL网站(>

MySQL具有如下特点或特性:

MySQL是一个数据库管理系统;

MySQL是一个关系数据库管理系统;

MySQL是开源的;

MySQL服务器是一个快的、可靠的和易于使用的数据库服务器;

MySQL服务器工作在客户/服务器或嵌入系统中;

有大量的MySQL软件可以使用。

3 MySQL的安装

MySQL有两种安装方式:源码包安装和二进制包安装。这两种方式各有特色:二位制包安装不需编译,针对不同的平台有经过优化编译的不同的二进制文件以及包格式,安装简单方便;源码包则必须先配置编译再安装,可以根据你所用的主机环境进行优化,选择最佳的配置值,安装定制更灵活。下面分别介绍这两种安装方式。

31 源码包方式安装

311 在linux系统中添加运行Mysql的用户和组

/usr/sbin/groupadd mysql

/usr/sbin/useradd -d /var/lib/mysql -s /sbin/nologin -g mysql mysql

312 下载最新稳定发行版(GA)的MySQL软件

访问MySQL网站>

wget >

313 解压缩下载的源码包

首先建立一个工作目录( 笔者建议的目录为/usr/local/src/mysql ) :

mkdir -p /usr/local/src/mysql

将下载的源码包移至工作目录:

mv  mysql-5051targz  /usr/local/src/mysql

进入工作目录并用tar命令解压源码包:

cd  /usr/local/src/mysql

tar zxvf  mysql-5051targz

命令执行结束后,当前工作目录下将生成一个新的子目录mysql-5051,此目录下即为mysql的源码文件。

314 配置Makefile文件

进入MySQL源码目录:

cd mysql-5051

执行下面的命令可查看可配置选项:

/configure --help

本文使用的配置命令格式如下:

CC=gcc CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" /configure --prefix=/usr/local/mysql --enable-thread-safe-client --enable-assembler --with-big-tables --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static  --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=complex

配置选项说明:

CC:C编译器的名称(用于运行configure),本文示例为gcc

CFLAGS:C编译器的标志(用于运行configure),本文示例为-O3,指定优化级别为3

CXX:C++编译器的名称(用于运行configure),本文示例为gcc

CXXFLAGS:C++编译器的标志(用于运行configure)

--prefix:指定安装目录,本文示例为/usr/local/mysql

--localstatedir:指定默认数据库文件保存目录,默认为安装目录下的var目录

--enable-thread-safe-client:编译线程安全版的MySQL客户端库

--enable-assembler:使用一些字符函数的汇编版本

--with-client-ldflags:客户端链接参数,本文示例为指定静态编译mysql客户端

--with-mysqld-ldflags:服务器端链接参数,本文示例为指定静态编译mysql服务器

--with-big-tables:在32位平台上支持大于4G行的表

--with-charset:指定默认字符集。mysql默认使用latin1(cp1252)字符集,可以使用此选项更改。字符集可以是big5、cp1251、cp1257、czech、danish、dec8、dos、euc_kr、gb2312、gbk、german1、hebrew、hp8、hungarian、koi8_ru、koi8_ukr、latin1、latin2、sjis、swe7、tis620、ujis、usa7或win1251ukr。

--with-collation:指定默认校对规则。mysql默认使用latin1_swedish_ci校对规则,可以使用此选项更改。

--with-extra-charsets:服务器需要支持的字符集,有三种可能的值:空格间隔的一系列字符集名;complex ,包括不能动态装载的所有字符集;all,将所有字符集包括进二进制。本文示例为complex。

注意:要想更改字符集和校对规则,要同时使用--with-charset和--with-collation选项。 校对规则必须是字符集的合法校对规则。(在mysql中使用SHOW COLLATION语句来确定每个字符集使用哪个校对规则)。

315 编译源代码

执行下面的命令编译源代码:

make

316 安装

执行下面的命令安装mysql到目标路径:

make install

317 复制默认全局启动参数配置文件到/etc目录

源码方式安装需要手动复制配置文件,配置模板位于源码树的support-files目录,有my-smallcnf、my-mediumcnf、my-largecnf、my-hugecnf四个,选择跟你的环境相接近的一个复制到/etc目录,并做适当修改。关于mysql配置文件的详细信息请参阅笔者的其它文章或是mysql官方文档。

本文示例选择my-mediumcnf,执行下面的命令将其复制到/etc目录:

cp /support-files/my-mediumcnf  /etc/mycnf

318 初始化授权表

执行下面的命令初始化授权表:

/scripts/mysql_install_db --user=mysql

319 更改mysql数据目录属主和权限

默认数据库文件保存目录为安装目录下的var目录,执行configure命令时可通过--localstatedir参数指定不同的目录,本文示例为默认位置。

chown -R mysqlmysql /usr/local/mysql/var

chmod -R 700 /usr/local/mysql/var

3110 设置开机自启动服务控制脚本

执行下面的命令复制启动脚本到资源目录:

cp /support-files/mysqlserver /etc/rcd/initd/mysqld

执行下面的命令增加mysqld服务控制脚本执行权限:

chmod +x /etc/rcd/initd/mysqld

执行下面的命令将mysqld服务加入到系统服务:

chkconfig --add mysqld

执行下面的命令检查mysqld服务是否已经生效:

chkconfig --list mysqld

命令输出类似下面的结果:

mysqld          0:off 1:off 2:on 3:on 4:on 5:on 6:off

表明mysqld服务已经生效,在2、3、4、5运行级别随系统启动而自动启动,以后可以使用service命令控制mysql的启动和停止。

启动mysqld服务:

service mysqld start

停止mysqld服务:

service mysqld stop

执行下面的命令关闭开机自启动:

chkconfig mysqld off

执行下面的命令可以改变开机自启动的运行级别为3、5:

chkconfig --level 35 mysqld on

3111 将mysql的bin目录加入PATH环境变量

编辑/etc/profile文件:

vi /etc/profile

在文件最后添加如下两行:

PATH=$PATH:/usr/local/mysql/bin

export PATH

执行下面的命令使所做的更改生效:

/etc/profile

32 二进制包方式安装

321 从安装媒体安装

Mysql二进制包已经包含在CentOS 5的安装媒体中,可以直接从安装媒体中安装下面三个rpm包:

mysql-5022-2101i386rpm

mysql-devel-5022-2101i386rpm

mysql-server-5022-2101i386rpm

不同的版本文件名有所不同,请注意区分。

执行下面的命令安装:

rpm -iUvh  mysql-5022-2101i386rpm

rpm -iUvh  mysql-devel-5022-2101i386rpm

rpm -iUvh  mysql-server-5022-2101i386rpm

322 通过yum安装

如果你安装的机器此时可以连接到互联网,笔者建议使用yum命令来简化安装过程:

yum install mysql-server mysql-devel mysql

yum将自动从centos的镜像站点查找你指明的软件的最新二进制包,并检查软件包依赖关系,安装软件的同时自动安装其依赖的软件包。

323 从mysql网站下载最新稳定版本的二进制包安装

通过CentOS安装媒体或yum安装的二进制包版本会落后于mysql开发者网站发布的版本,可以从mysql网站下载安装最新稳定版本的mysql。

访问MySQL网站>

在linux系统下用下面的命令下载:

wget >

wget >

wget >

wget >

wget >

执行下面的命令安装:

rpm -iUvh MySQL-server-community-5045-0rhel5i386rpm

rpm -iUvh MySQL-client-community-5045-0rhel5i386rpm

rpm -iUvh MySQL-devel-community-5045-0rhel5i386rpm

rpm -iUvh MySQL-shared-community-5045-0rhel5i386rpm

rpm -iUvh MySQL-shared-compat-5045-0rhel5i386rpm

4 MySQL的配置

41 目录结构

411 源码包方式安装目录结构

源码包方式安装时通常是在314节中configure命令的--prefix选项指定的目录中建立如下的目录结构,特殊指定的目录除外:

/bin                               #mysql用户可执行文件目录

/include/mysql           #mysql C头文件目录

/info                              #mysql 信息文件目录

/lib/mysql                    #mysql库文件目录

/libexec                        #mysql后台daemon程序目录

/man                             #mysql联机帮助文档目录

/mysql-test                  #mysql测试程序目录

/share/mysql              #mysql公用文件目录,包括字符集、配置文件模板、启动脚本、初始化SQL文件等

/sql-bench                   #mysql压力测试程序目录

/etc/mycnf                    #mysql配置文件

/etc/rcd/initd/mysqld #mysqld服务启动脚本

412 RPM二进制包方式安装目录结构

二进制包方式安装时使用系统软件默认目录结构 :

/usr/bin                     #mysql用户可执行文件目录

/usr/libexec              #mysql后台daemon程序目录

/usr/lib/mysql          #mysql库文件目录

/usr/lib64/mysql     #如果为64系统,mysql 64位库文件目录

/usr/share/doc        #mysql文档目录

/usr/share/info        #mysql信息文件目录

/usr/share/man      #mysql联机帮助文档目录

/usr/share/mysql    #mysql字符集目录

/usr/include/mysql #mysql C头文件目录

/var/log                     #mysqld服务日志文件目录

/var/run/mysqld      #mysqld服务运行状态目录

/var/lib/mysql          #mysql数据文件目录

/etc/mycnf               #mysql配置文件

/etc/rcd/initd/mysqld  #mysqld服务启动脚本

42 配置文件

Linux系统下,mysql的配置参数文件为mycnf,一般按下面的顺序查找此文件:/etc目录、mysql安装目录、mysql数据目录。配置模板位于源码树的support-files目录,有my-smallcnf、my-mediumcnf、my-largecnf、my-hugecnf四个,关于mysql配置文件的详细信息请参阅笔者的其它文章或是mysql官方文档。

43 启动mysqld服务

执行下面的命令启动mysql:

service mysqld start

43 设置mysql帐号

mysql安装后默认生成两个帐号:一个是root,未设置密码,可以从本机登录到mysql;另一个是匿名帐号,无帐号名、无密码,可以从本机登录,未提供用户名的连接都将假定为此帐号。这样的设置存在着安全隐患,按下面的步骤进行更改。

以root帐号连接到mysql服务器:

mysql -u root

如果提示找不到mysql文件,请尝试使用绝对路径,如本文示例为:

/usr/local/mysql/bin/mysql -u root

命令成功执行后将进入到mysql命令提示符下:

mysql>

(以下命令均在mysql命令提示符下执行)

改变当前数据库为mysql:

use mysql

设置从本地主机登录的root帐号密码:

set password for root@localhost=password('your password');

或:

update user set password=password('your password') where user='root' and host='localhost';

删除匿名帐号:

delete from user where user='' ;

删除密码为空的帐号:

delete from user where password='';

删除允许非localhost主机登录的帐号:

delete from user where host<>'localhost' ;

执行下面的命令使更改生效:

flush privileges ;

执行下面的命令退出mysql命令行:

quit

或:

/q

5 结束语

至此,Mysql基本安装完毕。希望本文能对初学者有所帮助。

当前,utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法。一些字符还是不能支持。并且,不能完全支持组合的记号。这主要影响越南和俄罗斯的一些少数民族语言,如:Udmurt 、Tatar、Bashkir和Mari。

utf8_unicode_ci的最主要的特色是支持扩展,即当把一个字母看作与其它字母组合相等时。例如,在德语和一些其它语言中‘ß’等于‘ss’

方法/步骤

打开SQLyogEnt,进入配置界面,点击左上方新建

在d出的对话栏里,填写连接名称,方便以后区分使用

创建连接完成,输入

mysql主机地址 localhost

用户名 root

数据库连接密码(一般默认为root)

端口3306

数据配置完成,点击立即连接

数据库连接成功,我们可以在右侧命令行栏栏里输入相应的sql语句,进行 *** 作

也可以使用简便的 *** 作,右键点击左上方连接用户,在d出的菜单栏选择创建数据库

然后设置数据库编码,数据库名称以及校对规则

如果我们已有数据库文件,可以导入到SQLyog中进行 *** 作,右键点击选择导入sql语句即可

select from Biz_ExamCollection   where collectionType = 5 AND date_format(createDTM,'%Y-%m-%d') <= date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m-%d')

MySQL查询指定时间的数据:

#获取当月数据

SELECT FROM user_event WHERE DATE_FORMAT(create_time,'%Y-%m') = DATE_FORMAT(NOW(),'%Y-%m')

#获取3月份数据

SELECT FROM user_event WHERE DATE_FORMAT(create_time,'%Y-%m') = DATE_FORMAT('2016-03-01','%Y-%m')

#获取三月份数据

SELECT FROM user_event WHERE YEAR(create_time)='2016' AND MONTH(create_time)='3'

#获取本周数据

SELECT FROM user_event WHERE YEARWEEK(DATE_FORMAT(create_time,'%Y-%m-%d')) = YEARWEEK(NOW());

#查询上周的数据

SELECT FROM user_event WHERE YEARWEEK(DATE_FORMAT(create_time,'%Y-%m-%d')) = YEARWEEK(NOW())-1;

#查询距离当前现在6个月的数据

SELECT FROM user_event WHERE create_time BETWEEN DATE_SUB(NOW(),interval 6 month) and NOW();

#查询上个月的数据

SELECT FROM user_event WHERE DATE_FORMAT(create_time,'%Y-%m')=DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH),'%Y-%m')

扩展资料

MYSQL基础知识:

数据库增删查改

创建数据库:语法:create database 数据库 [character 字符集 collate 校对规则]

查看数据库:

查看所有数据库:show databases;

查看某个数据库:show create database 数据库名;

修改数据库:语法:alter database 数据库名 character 字符集 collate 校对规则

删除数据库:语法:drop database 数据库名;

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

查看当前使用数据库:select database();

数据库表 *** 作

创建表语法:

create table 表名 (

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

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

字段名 类型(长度) 约束

);

以上就是关于CREATE DATABASE `thinkcmf` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_c全部的内容,包括:CREATE DATABASE `thinkcmf` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_c、MySQL SQL的基础应用、如何在linux下安装mysql数据库并配置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9690926.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存