MySql学习笔记
MySql学习笔记
2014-07-03 23:57
Wizardlsw
阅读(281)
评论(0)
编辑
收藏
举报
Install MySql on Windows:
https://dev.mysql.com/doc/refman/5.7/en/windows-install-archive.html
https://dev.mysql.com/doc/refman/5.7/en/windows-create-option-file.html
connector-net-programming-connecting-connection-string Note: charset=ut8; is very important!
Example: server=ali.centos.test.com;database=tuotuo;uid=uid;pwd=pwd;charset=utf8;
http://stackoverflow.com/questions/21618015/how-to-connect-to-mysql-database
https://dev.mysql.com/downloads/connector/net/ Download DotNet mysql connector. Or using NuGet: > Install-Package MySql.Data
using MySql.Data; using MySql.Data.SqlClient; var conn = new MySqlConnection(connectionString);
Install MySQL on CentOS-7
https://www.linode.com/docs/databases/mysql/how-to-install-mysql-on-centos-7
https://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7 Now, it called MariaDB. It works.
https://www.howtoforge.com/apache_php_mysql_on_centos_7_lamp
Set passwords for the MySQL root account: {{mysql_secure_installation}}
#To check your hostname run: > hostname > hostname -f #Update your system: sudo yum update #Install and Start MariaDB sudo yum install mariadb-server #Enable MariaDB to start on boot and then start the service: sudo systemctl enable mariadb sudo systemctl start mariadb
在远程机器全新安装MYSQL, 在连接时有时会遇到一些问题:
1、报错:1130-host … is not allowed to connect to this MySql server
http://www.cnblogs.com/xyzdw/archive/2011/08/11/2135227.html
2、之后有遇到:SSL not enabled 的错误:
http://stackoverflow.com/questions/27202499/mysql-workbench-connection-ssl-not-enable
http://blog.itpub.net/15480802/viewspace-751574
防止在MYSQL中插入重复记录: http://www.cnblogs.com/zeroone/archive/2012/04/18/2454728.html
https://linuxize.com/post/how-to-change-mysql-user-password/ 修改密码Change Password
ALTER USER \'user-name\'@\'localhost\' IDENTIFIED BY \'NEW_USER_PASSWORD\';
FLUSH PRIVILEGES;
VERION:
select @@version;
select @@hostname;
MySQL 命令行
第一招、mysql服务的启动和停止
net stop mysql
net start mysql
第二招、登陆mysql
语法如下: mysql -u 用户名 -p 用户密码
键入命令mysql -u root -p,回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了,mysql的提示符是:
mysql>
注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP
第三招、增加新用户
格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by “密码”
如,增加一个用户user1密码为password1,让其可以在本机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令:
grant select,insert,update,delete on *.* to user1@localhost Identified by “password1”;
http://dev.mysql.com/doc/refman/5.5/en/create-user.html
create user \’username\’@\’%\’ identified by \’Password\’;
grant ALL PRIVILEGES on dbname.* to \’username\’@\’%\’ [identitified by \’Password\’];
如果希望该用户能够在任何机器上登陆mysql,则将localhost改为“%”。
如果你不想user1有密码,可以再打一个命令将密码去掉。
grant select,insert,update,delete on mydb.* to user1@localhost identified by “”;
再刷新一下privileges>> flush privileges
也可以直接这样子创建一个用户: insert into mysql.user(Host,User,Password) values(“localhost”,”test”,password(“1234”));
查看所有用户:select host,user from mysql.user;
删除账户及权限:>drop user 用户名@\’%\’;
>drop user 用户名@ localhost;
第四招: 操作数据库
登录到mysql中,然后在mysql的提示符下运行下列命令,每个命令以分号结束。
1、 显示数据库列表。
show databases;
缺省有两个数据库:mysql和test。 mysql库存放着mysql的系统和用户权限信息,我们改密码和新增用户,实际上就是对这个库进行操作。
2、 显示库中的数据表:
use mysql;
show tables;
3、 显示数据表的结构:
describe 表名;
4、 建库与删库:
create database 库名;
drop database 库名;
5、 建表:
use 库名;
create table 表名(字段列表);
drop table 表名;
6、 清空表中记录:
delete from 表名;
7、 显示表中的记录:
select * from 表名;
第五招、导出和导入数据
1. 导出数据:
mysqldump –opt test > mysql.test
即将数据库test数据库导出到mysql.test文件,后者是一个文本文件
如:mysqldump -u root -p123456 –databases dbname > mysql.dbname
就是把数据库dbname导出到文件mysql.dbname中。
2. 导入数据:
mysqlimport -u root -p123456 < mysql.dbname。
不用解释了吧。
3. 将文本数据导入数据库:
文本数据的字段数据之间用tab键隔开。
use test;
load data local infile “文件名” into table 表名;
1:使用SHOW语句找出在服务器上当前存在什么数据库:
mysql> SHOW DATABASES;
2:2、创建一个数据库MYSQLDATA
mysql> CREATE DATABASE MYSQLDATA;
3:选择你所创建的数据库
mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)
4:查看现在的数据库中存在什么表
mysql> SHOW TABLES;
5:创建一个数据库表
mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));
6:显示表的结构:
mysql> DESCRIBE MYTABLE;
7:往表中加入记录
mysql> insert into MYTABLE values (“hyq”,”M”);
8:用文本方式将数据装入数据库表中(例如D:/mysql.txt)
mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE;
9:导入.sql文件命令(例如D:/mysql.sql)
mysql>use database;
mysql>source d:/mysql.sql;
10:删除表
mysql>drop TABLE MYTABLE;
11:清空表
mysql>delete from MYTABLE;
12:更新表中数据
mysql>update MYTABLE set sex=”f” where name=\’hyq\’;
13:备份数据库mysqldump -u root 库名>xxx.data14:
例2:连接到远程主机上的MYSQL
假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql -h110.110.110.110 -uroot -pabcd123
(注:u与root可以不用加空格,其它也一样)
3、退出MYSQL命令: exit
转自:http://www.iteye.com/topic/469868
例如:如果xhkdb数据库存在,尝试存取它:
命令:create table ( [,.. ]);
mysql> CREATE TABLE `testa` (
-> `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
-> `name` varchar(20) DEFAULT NULL ,
-> PRIMARY KEY (`id`)
-> ) ENGINE=MyISAM AUTO_INCREMENT=65 DEFAULT CHARSET=utf8;
2、获取表结构
命令: desc 表名,或者show columns from 表名
mysql> DESCRIBE MyClass
mysql> desc MyClass;
mysql> show columns from MyClass;
1)、查询所有行
mysql> select * from MyClass order by id limit 0,2;
7、修改表中数据:update 表名 set 字段=新值,… where 条件
mysql> update MyClass set name=”Mary” where id=1;
8、在表中增加字段:
命令:alter table 表名 add字段 类型其他;
例如:在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0
mysql> alter table MyClass add passtest int(4) default ”0”
Rename Column:
alter table ad change ImageUrl ThumbImg varchar(500);
9、更改表名:
命令:rename table 原表名 to 新表名;
例如:在表MyClass名字更改为YouClass
mysql> rename table MyClass to YouClass;
CREATE TABLE mytable (
mydate TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
….)
-- https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html DROP TABLE IF EXISTS `api_requests`; CREATE TABLE `api_requests` ( api_request_key bigint NOT NULL auto_increment key, initiator varchar(50), request_type varchar(50), initiator_ip varchar(20), request_id varchar(50), request_url varchar(500), request_headers varchar(4000), request_body nvarchar(8000), create_date datetime ); CREATE INDEX ix_api_requests_request_id on api_requests (request_id DESC); CREATE INDEX ix_api_requests_request_url on api_requests (request_url ASC); CREATE INDEX ix_api_requests_create_date on api_requests (create_date DESC); DROP TABLE IF EXISTS `api_responses`; CREATE TABLE `api_responses` ( api_response_key int auto_increment key, api_request_key bigint NOT NULL, status_code varchar(20), response_headers varchar(4000), response_body nvarchar(8000), create_date datetime ); CREATE INDEX ix_api_responses_request_key on api_responses (api_request_key DESC); ALTER TABLE `api_responses` ADD CONSTRAINT `fk_api_responses_request_key` FOREIGN KEY (`api_request_key`) REFERENCES `api_requests`(`api_request_key`); -- ALTER TABLE api_responses DROP FOREIGN KEY `fk_api_responses_request_key` ;
ConnectionString in .NET(needs to download mysql connector for .NET):
<add name=”” connectionString=”Server=localhost;port=3306;Database=ddname;Uid=user1;Pwd=111111;” providerName=”MySql.Data.MySqlClient”/>
http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
TODO:
MySQL support insert multiple records as following:
Insert into table_name (f1, f2) values(v1, v11), (v2, v21), (v3, v31);
Q: if not exists?
http://dev.mysql.com/doc/refman/5.7/en/exists-and-not-exists-subqueries.html
日期相关操作:
STR_TO_DATE(\’2010-10-15 10:00:00\’, \’%Y-%m-%d %H:%i:%s\’)
MYSQL DATE and DateTime: http://www.cnblogs.com/jinzhenshui/archive/2009/06/18/1505880.html