mysql 的基本表的应用_Mysql的基本应用笔记1
MySQL的导入导出
导入sql脚本
方式一
mysql -u用户名-p数据库名
mysqljump -u root -p test < c:\a.sql
方式二
1.在命令行输入以下命令
>mysql -u root -p123
mysql>use test;
mysql> source c:/test.sql
用show tables;查看有哪些表
用desc tableName;查看表结构
2.在命令行输入以下命令
>mysql -u root -p123 test < c:/test.sql
导出sql脚本
mysqldump -u用户名-p数据库名>存放位置
mysqljump -u root -p test > c:\a.sql
Mysql mysqldump用法导出表结构及表数据
命令行下具体用法如下:mysqldump -u用戶名-p密码-d数据库名表名脚本名;
1、导出数据库为dbname的表结构(其中用戶名为root,密码为dbpasswd,生成的脚本名为db.sql)
mysqldump -uroot -pdbpasswd -d dbname >db.sql;
2、导出数据库为dbname某张表(test)结构
mysqldump -uroot -pdbpasswd -d dbname test>db.sql;
3、导出数据库为dbname所有表结构及表数据(不加-d)
mysqldump -uroot -pdbpasswd dbname >db.sql;
4、导出数据库为dbname某张表(test)结构及表数据(不加-d)
mysqldump -uroot -pdbpasswd dbname test>db.sql;
多表操作
多表更新
#首先创建一张表
create temporary table test_music(
id int(11) primary key,
picUrl varchar(300)
);
select * from db_ayyc.test_music;
insert into test_music(id,picUrl) value('21','aaaaaaaa');
insert into test_music(id,picUrl) select id,picUrl from music where picUrl='none';
mysqldump -uroot -pdbpasswd -d db_ayyc test_music > ./test_music.sql;
source ./test_music.sql
update music m,test_music tm set m.picUrl=tm.picUrl where m.id=tm.id;
#注意:多表UPDATE不可以使用ORDER BY或LIMIT
多表删除
仅仅在FROM或USING子句之前列出的表中的匹配记录行被删除。效果就是,你要以从多个表中同时删除记录行,并且同样可以有其它的表用于检索。在表名后的.*仅仅是为了兼容Access:
DELETE t1,t2 FROM t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id
or
DELETE FROM t1,t2 USING t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id
在上面的情况下,我们仅仅从t1和t2表中删除匹配的记录行。如果一个ORDER BY子句被使用,记录行将以指定的次序删除。这实际上只有连同LIMIT一起才有用。示例如下:
DELETE FROM somelog WHERE user = 'jcole' ORDER BY timestamp LIMIT 1
这将删除匹配WHERE子句的,并且最早被插入(通过timestamp来确定)的记录行。DELETE语句的LIMIT rows选项是MySQL特有的,它告诉服务器在控制权被返回到客户端之前可被删除的最大记录行数目。这可以用来确保一个特定的DELETE命令不会占用太长的时间。你可以简单地重复使用DELETE命令,直到被影响的记录行数目小于LIMIT值。
从MySQL 4.0开始,在DELETE语句中可以指定多个表,用以从一个表中删除依赖于多表中的特殊情况的记录行。然而,在一个多表删除中,不能使用ORDER BY或LIMIT。
联接查询
从music表中找出上线的非宜搜的图库的图片地址值非空且不等于'none'的本库图片地址值不等于'none'的歌曲
selectma.*from
(selectm1.*frommusic m1 wherem1.musicStatus='1'andm1.type='0'andm1.nonEasouSongId <>'0'andm1.picUrl<>'none')ma
leftjoin
(selectm2.*frommusic m2 wherem2.musicStatus='1'andm2.type='0'andm2.nonEasouSongId <>'0'andm2.picUrl<>'none'andm2.downPicUrl ='none')mb
using(downPicUrl)
whereisnull(mb.downPicUrl);
从music表中找出上线的非宜搜的图库的图片地址值不等于'none'的本库图片地址值不等于'none'的歌曲
selectcount(m1.id)frommusic m1 wheremusicStatus='1'andtype='0'andnonEasouSongId <>'0'
andnotexists(
selectm2.*frommusic m2 wherem2.musicStatus='1'andm2.type='0'andm2.nonEasouSongId <>'0'and(m2.picUrl='none'orm2.downPicUrl ='none')
andm1.id=m2.id
)
真正执行查询的语句:
==================================================================
selectcount(*)totalCount from(
selectm1.*frommusic m1 wheremusicStatus='1'andtype='0'andnonEasouSongId <>'0'
andnotexists(
selectm2.*frommusic m2 wherem2.musicStatus='1'andm2.type='0'andm2.nonEasouSongId <>'0'and(m2.picUrl='none'orm2.downPicUrl ='none')
andm1.id=m2.id
)groupbym1.musicName)mc;
selectmc.*totalCount from(
selectm1.*frommusic m1 wheremusicStatus='1'andtype='0'andnonEasouSongId <>'0'
andnotexists(
selectm2.*frommusic m2 wherem2.musicStatus='1'andm2.type='0'andm2.nonEasouSongId <>'0'and(m2.picUrl='none'orm2.downPicUrl ='none')
andm1.id=m2.id
)groupbym1.musicName)mc;
Mysql alter语句的用法
mysql修改表名,列名,列类型,添加表列,删除表列
alter table test rename test1; --修改表名
alter table test add column name varchar(10); --添加表列
alter table test add column name varchar(10) after id;
alter table test modify column name varchar(10) after nickname; --修改列的排序
alter table test drop column name; --删除表列
alter table test modify address char(10) --修改表列类型
alter table test change address address char(40)
alter table test change column address address1 varchar(30)--修改表列名
mysql alter对表字段的操作
//主键
alter table tabelname add new_field_id int(5) unsigned default 0 not null auto_increment ,add primary key (new_field_id);
//增加一个新列
alter table t2 add d timestamp;
alter table infos add ex tinyint not null default '0';
//删除列549830479
alter table t2 drop column c;
//重命名列
alter table t1 change a b integer;
//改变列的类型
alter table t1 change b b bigint not null;
alter table infos change list list tinyint not null default '0';
//重命名表
alter table t1 rename t2;
加索引
mysql> alter table tablename change depno depno int(5) not null;
mysql> alter table tablename add index索引名(字段名1[,字段名2…]);
mysql> alter table tablename add index emp_name (name);
加主关键字的索引
mysql> alter table tablename add primary key(id);
加唯一限制条件的索引
mysql> alter table tablename add unique emp_name2(cardnumber);
删除某个索引
mysql>alter table tablename drop index emp_name;
修改原字段名称及类型:
mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;
删除字段:
mysql> ALTER TABLE table_name DROP field_name;
linux安装mysql
方式一
参考地址:http://dev.mysql.com/doc/refman/5.5/en/linux-installation-native.html
Red Hat Linux, Fedora, CentOS
yum install mysql mysql-server mysql-libs mysql-server
service mysqld start
chkconfig --levels 235 mysqld on
Debian, Ubuntu, Kubuntu
apt-get install mysql-client-5.1 mysql-server-5.1
方式二
安装版本:mysql-5.5.8.tar.gz
1、安装cmake编译器。
1)、下载cmake
#cd /usr/local/src
#wget http://www.cmake.org/files/v2.8/cmake-2.8.3.tar.gz
2)、解压cmake
#tar -zvxf cmake-2.8.3.tar.gz
3)、配置编译
#cd cmake-2.8.3
#yum -y install gcc
#yum -y install gcc-c++
#./configure
#make
#make install
2、安装MySQL
1)、下载MySQL。
#cd /usr/local/src
#wget http://mirrors.ircam.fr/pub/mysql/Downloads/MySQL-5.5/mysql-5.5.8.tar.gz
2)、添加必要的组和拥有者
#groupadd mysql
#useradd -r -g mysql mysql
3)、解压MySQL
#tar -zvxf mysql-5.5.8.tar.gz
4)、配置编译
#mkdir /usr/local/mysql
#mkdir /usr/local/mysql/data
#cd /usr/local/src/mysql-5.5.8
#cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DINSTALL_DATADIR=/usr/local/mysql/data \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=1
3、参数说明:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql //安装目录
-DINSTALL_DATADIR=/usr/local/mysql/data //数据库存放目录
-DDEFAULT_CHARSET=utf8//使用utf8字符
-DDEFAULT_COLLATION=utf8_general_ci //校验字符
-DEXTRA_CHARSETS=all//安装所有扩展字符集
-DENABLED_LOCAL_INFILE=1//允许从本地导入数据
#make
#make install
注意事项:
重新编译时,需要清除旧的对象文件和缓存信息。
# make clean
# rm -f CMakeCache.txt
4、设置目录权限
# cd /usr/local/mysql
# chown -R root:mysql .//把当前目录中所有文件的所有者所有者设为root,所属组为mysql
# chown -R mysql:mysql data
5、配置文件
# cp support-files/my-medium.cnf /etc/my.cnf//这个配置仅适合小内存系统(32M - 64M)
打开如下注释:
innodb_data_home_dir = /usr/local/mysql/data
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /usr/local/mysql/data
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
添加默认字符集:
[client]
default-character-set = utf8//添加编码支持
[mysqld]
default-character-set = utf8//添加编码支持
max_connections = 10000//根据服务器性能调节
basedir = /usr/local/mysql//设置安装目录,这样在系统启动时才能正确运行到/etc/rc.d/init.d/mysql start
6、创建系统数据库的表
# cd /usr/local/mysql
# scripts/mysql_install_db --user=mysql
7、设置权限启动
设置环境变量:
# vi /root/.bash_profile
在PATH=$PATH:$HOME/bin添加参数为:
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/mysql/lib
#source /root/.bash_profile
手动启动MySQL:
# cd /usr/local/mysql
# ./bin/mysqld_safe --user=mysql &//启动MySQL,但不能停止
启动日志写在此文件下:
/usr/local/mysql/data/localhost.err
关闭MySQL服务
# mysqladmin -u root -p shutdown//这里MySQL的root用户还没有配置密码,所以为空值。
通过脚本启动MySQL:
# ln -s /usr/local/mysql/support-files/mysql.server /usr/local/mysql
//必须注意,是放在mysql目录下,不是bin目录下
# cp /usr/local/mysql/support-files/mysql.server /usr/local/mysql
# mysql.server start //启动mysql
# mysql.server stop //停止mysql
在引导时启动MySQL:
# ln -s /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysql
# ln -s /usr/local/mysql/mysql.server /etc/rc.d/init.d/mysql
# cd /etc/rc.d/init.d
# chkconfig --add mysql//配置是否自动启动, chkconfig --del mysql可删除
# chmod +x /etc/rc.d/init.d/mysql //添加如执行权限
Linux运行级别:
分成了8种运行级别,其中常用7种。可在/etc/inittab文件中设置。
0 - halt
1 - Single user mode
2 - Multiuser, without NFS
3 - Full multiuser mode
4 - unused
5 - x11
6 - reboot
默认设置为:id:3:initdefault:
每一种动行级别都有自已独立的文件夹,例如:
/etc/rc.d/rc3.d表示运行级别为3的配置都存放在这个文件侠中。
# chkconfig --list |grep mysql//检查看是否设置为自启动
mysql 0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
表示:运行级别2、3、4、5都会自动启动mysql
另一种手动配置自已启动:
可能会出现这种情况,如果你试图在/etc/rc.d/rc3.d目录下运行../init.d/mysql start可能会收到如下错误
Starting MySQLCouldn't find MySQL server (./bin/mysqld_safe[失败]
可见mysql.server内部引用了一个相对路径./bin/mysqld_safe,所以这样就导致失败。
这样我们可以直接在rc.local文件中添加启动脚本:
# chkconfig --del mysql
# cd /etc/rc.d
# vi rc.local //添加:/usr/local/mysql/bin/mysqld_safe --user=mysql &
解决办法:在/etc/my.cnf配置文件中添加:
basedir = /usr/local/mysql
8、修改MySQL的root用户的密码:
# mysql -u root mysql
mysql>use mysql;
mysql>desc user;
mysql>update user set Password = password('xxxxxx') where User='root';
mysql>select Host,User,Password from user where User='root';
mysql>flush privileges;
mysql>exit
重新登录:mysql -u root -p
9、添加软链接
# ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
# ln -s /usr/local/mysql/include/mysql /usr/include/mysql
注意事项:
<1>、MySQL5.5默认使用InnoDB作为存储引擎,所以可以不设置DWITH_MYISAM_STORAGE_ENGINE值
MySQL数据库的管理
1.直接在数据库中修改记录
mysql> use mysql
mysql> update user set password = password("new_password") where user = "user_name";
mysql> flush privileges;
其实这种方法就是更新一条数据库记录,与普通update语句不同的是,密码加密存储,需用password()函数来生成,另一个不同点是需要刷新权限表。
2.在数据库中运行set password
mysql> set password for user_name = password("new_password");
mysql> flush privileges;
同第一种方法,也要刷新权限表
3.直接在shell环境运行mysqladmin
> mysqladmin -u user_name -p password "new_password"
> mysqladmin flush-privileges
格式:mysqladmin -u用户名-p旧密码password新密码
示例:给root加个密码123456。
键入以下命令:
[root@test1 local]# /usr/bin/mysqladmin -u root password 123456
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
4.授权指定表予以指定用户
grant all privileges on db.table to user_name@localhost identified by "your_pwd";
用户名密码的生效不必用flush privileges刷新
注:
db.table: db表示授权哪个库,table是相应库里的表。可以用*.*表示所有库所有表。注意,如果想表示某个库的所有表,必须用db_name.*,后面的".*"不可省略,否则权限将无法赋予。
user_name@localhost: user_name表示用户名,localhost表示该用户只能在本地访问该库,可以用%表示从任何地方访问该库,也可以用111.11.22.33来表示地址
your_pwd:给用户设置的密码
5.mysql授权给其它机子访问
授予所有机器:grant all on *.* to root@'%' identified by '123';
授予指定机器权限:grant all on *.* to root@'192.168.1.88' identified by '123';
授予级连权限:grant all privileges on *.* to root@'%' identified by "123" with grant option;
取消指定机器的权利:drop user root@'192.168.1.88';
给指定用户授指定数据户的权限
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
FLUSH PRIVILEGES;
6.设置编码
修改/etc/my.cnf或my.ini
[client]
default-character-set=utf8
[mysqld]
character_set_server=utf8
default-character-set=utf8
参考链接:http://www.busfly.net/post/58.html
mysql 的基本表的应用_Mysql的基本应用笔记1相关推荐
- mysql数据库分表备份脚本_MySQL分库分表备份脚本
MySQL分库分表备份脚本 vim /data/mysqlback.sh #! /bin/bash BAKPATH=/data/mysql-back MYUSER=root MYPASS=" ...
- mysql 为数据表添加字段_MySQL数据表添加字段实例
MySQL 允许在开头.中间和结尾处添加字段.针对不同的位置,MySQL数据表添加字段的方式也有所不同,下面我们一起来看MySQL数据表添加字段的实例,方便我们理解MySQL数据表添加字段的方式. M ...
- mysql删除emp表的语句_MySQL删除数据表(DORP TABLE语句)
在MySQL数据库中,对于不再需要的数据表,我们可以将其从数据库中删除. 在删除表的同时,表的结构和表中所有的数据都会被删除,因此在删除数据表之前最好先备份,以免造成无法挽回的损失. 下面我们来了解一 ...
- mysql如何查看表的大小_mysql 如何查看表的大小
mysql 查看表的大小方法:1.查看所有数据库各表容量大小,代码为[truncate(data_length/1024/1024, 2) as '数据容量(MB)']:2.查看指定数据库各表容量大小 ...
- mysql查看数据库表大小语句_MySQL查看数据库表容量大小的命令语句讲解
MySQL查看数据库表容量大小的命令语句讲解 发布时间:2020-04-27 14:17:23 来源:亿速云 阅读:180 作者:三月 本文主要给大家介绍MySQL查看数据库表容量大小的命令语句讲解, ...
- mysql数据库分表备份脚本_MySQL分库分表备份数据库脚本的操作
MySQL分库分表备份数据库脚本的操作 发布时间:2020-05-26 16:52:23 来源:51CTO 阅读:134 作者:三月 本篇文章给大家主要讲的是关于MySQL分库分表备份数据库脚本的操作 ...
- mysql删除多表sql语句_Mysql删除多表及多表记录sql语句
本文章总结了同时删除多个数据表与同时删除多个数据表的关系数据的方法,有需要的朋友可参考一下. 批量删除多表 删除所有pre_前缀的表 代码如下 复制代码 SELECT CONCAT( 'drop ...
- mysql中数据表如何关联_mysql 如何导入/导出2个关联表中的数据
mysql 怎么导入/导出2个关联表中的数据 表一 id student 1 S1 2 S2 表二 id sid scord order 1 1 100 1 2 1 60 2 3 1 80 3 4 2 ...
- mysql 查看某个表缓存情况_MySQL 查询缓存 QUERY_CACHE
保存查询返回的完整结果.当查询命中该缓存,MySQL会立即返回结果,跳过解析.优化和执行阶段. 官方在特定环境测试结果(官方文档中有详细说明): 1.如果对某表进行简单查询,但每次查询条件都不一样时, ...
最新文章
- Pythonic版冒泡排序和快速排序(附:直接插入排序)
- 重磅直播|结构光之相移法+格雷码技术详解
- 硅片行业:过剩背景下的寡头市场
- 一篇文章搞懂JavaScript运行机制
- insert exec 语句不能嵌套_走向DBA「MSSQL篇」 - 从SQL语句的角度提高数据库的访问性能...
- xmanager远程桌面控制linux
- linux能挂载的文件类型,mount命令是如何自动识别挂载点的文件系统类型的
- 每日算法系列【LeetCode 829】连续整数求和
- iOS底层 - 符号解析(dSYM 系统符号)Go语言版本
- 【应用时间序列分析】第一章 时间序列分析简介
- 科学计算matlab尔雅答案,科学计算与MATLAB语言超星尔雅最新答案大全
- 文件粉碎机c语言代码,VB写文件粉碎机
- Git删除历史记录(已提交)中的大文件
- WindowsServer2012R2 SSL/TLS 受诫礼(BAR-MITZVAH)攻击漏洞(CVE-2015-2808)解决办法
- 遵循学术规范,避免学术不端
- python图标变成了白色_怎么解决图标变成白色图标的问题
- 《机器学习实战》——朴素贝叶斯
- 可能是最优雅的分割线实现方式CSS实现
- docker常用命令-docker start
- Linux 命令(212)—— ssh-add 命令